武汉科技大学城市学院。
课程设计报告。
课程名称数据结构课程设计。
目录。题目一喷水装置(一) 1
1 题目要求 1
2算法设计思路及步骤 2
3算法描述 3
4结果分析 4
题目二阶乘的0 5
1 题目要求 5
2算法设计思路及步骤 6
3算法描述 7
4结果分析 8
题目三找球号(一) 8
1 题目要求 8
2算法设计思路及步骤 9
3算法描述 10
4结果分析 11
题目四 ascii码排序 12
1 题目要求 12
2算法设计思路及步骤 13
3算法描述 13
4结果分析 15
题目五会场安排问题 16
1 题目要求 16
2算法设计思路及步骤 17
3算法描述 17
4结果分析 19
小结 20参考文献 21
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数ri(0时间限制:3000 ms | 内存限制:65535 kb 。
第一行m表示有m组测试数据,每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出所用装置的个数。
1.5 样例输出。
这是一个3级难度的题,看起来着题目不知从何下手。我仔细想了想,发现,只要算出这个草地的斜边长度, 然后只要全部圆的半径合大于等于这个斜边长度的一半就可以了。不过必须舍弃半径小于等于1的装置,在草坪中线上无论怎么放,它是无法完全覆盖整个草坪的。
如图2.1: x = sqrt(r*r-(h/2)*(h/2)),这样半径为r的圆能够覆盖的长度为2x, 剩下w-2x, 这样遍历下去, 当w<=0时,就满足了。
简化一下,就是求全部圆的半径(小于等于1的不算)和大于等于这个斜边长度的一半。r=sqrt(x*x+h*h)/2;总的半径和ra = sqrt(w*w+h*h)/2
图1.1 喷水装置示意图。
1) 建立int型变量m,通过scanf接受用户输入m组测试数据,从而控制程序循环的次数。
2) 建立一个double型数组buf[600],用于存放每个喷水装置能覆盖圆的半径。
3) 建立double型变量len,并计算出草地斜边长度的一半。
4) while循环,控制测试组数,是输入m组测试数据。
5) 调用系统快速排序方法对半径排序,compare方法是指向函数的指针,是作为qsort的参数,用于确定快速排序的顺序。
6) sum变量用于存放半径和。
7) 当半径和大于等于草地斜边长度一半就满足条件了。
8) printf输入所用装置个数。
#include <>
#include <>
#include <>
/指向函数的指针,用于确定快速排序的顺序。
int compare (const void * a, const void * b)
return *(double *)b > double *)a ? 1 : 1;
int main()
int m;
scanf("%d",&m输入m组测试数据。
double buf[600]; 存放每个喷水装置能覆盖圆的半径。
double len = sqrt(20*20 + 2*2)/2草地斜边长度的一半。
while (m--)
return 0;
return 0;
这是一个3级的题目,初次做acm系统的题目,在vc++ 6.0编译器里运行通过的程序,提交到acm系统时,经常报错。多数情况是内存或时间超出题目的限制或程序的输入输出格式没严格按照题目的意思来。
经过改进程序的算法和优化**,严格按照题目要求的格式输入或输出等,再提交到acm系统时,终于成功的通过了。
图1.2 喷水装置acm结果。
图1.3 喷水装置运行。
当然,拿下这个题目我花了不少精力,通过,我了解了怎样调用系统的快速排序方法,虽然它的参数很多。
计算n!的十进制表示最后有多少个0。
时间限制:3000 ms | 内存限制:65535 kb。
第一行输入一个整数n表示测试数据的组数(1<=n<=100)
每组测试数据占一行,都只有一个整数m(0<=m<=10000000)
输出m的阶乘的十进制表示中最后0的个数。
比如5!=120则最后的0的个数为1
这个题看似简单,其实不怎么好下手。一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, 而 2 的个数是远远多余 5 的个数的, 因此求出 5 的个数即可。 题解中给出的求解因子 5 的个数的方法是用 n 不断除以 5, 直到结果为 0, 然后把中间得到的结果累加。
例如, 100/5 = 20, 20/5 = 4, 4/5 = 0, 则 1 到 100 中因子 5 的个数为 (20 + 4 + 0) =24 个, 即 100 的阶乘末尾有 24 个 0. 其实不断除以 5, 是因为每间隔 5 个数有一个数可以被 5 整除, 然后在这些可被 5 整除的数中, 每间隔 5 个数又有一个可以被 25 整除, 故要再除一次,直到结果为 0, 表示没有能继续被 5 整除的数了。
1) 建立int型变量n,并从键盘输入n,表示有n组测试数据。
2) while循环,控制测试组数,由n决定循环次数。
3) 循环里面要求输入测试整数m,并建立变量sum。
4) 内层循环累加m除5的结果,直到m/5结果为0。
5) printf输入结果。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...