资源描述:
《牛吃草问题c语言》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ProblemG牛吃草问题Description假定某牧场中公牛每只每天吃3捆草,母牛每只每天吃2捆草,小牛每只每天吃半捆草。现牧场中有100头牛,每天消耗100捆草,问此100头牛中公牛、母牛、小牛各几只,请你编程列出所有可能的情况。Ouput分别罗列出公牛、母牛、小牛各几只的所有可能情况。(数据之间是采用空格,具体的空格数,你可复制”样例输出”)SampIeInput无SampIeOutput公牛Case1:2Case2:5母牛小牛30682570Case7:2080#includeintma
2、in0{inti,j,k,x=1;printf("公牛母牛小牛rf);for(i二0;iUOO;i++)for(j=0;j<=100;j++)for(k=0;k<=100;k++)if(i+j+k=100&&3*i+2*j+0.5*k==100)printf('Case%d:%d%d%dn,x++,i,j,k);Problem1163湖泊水深Description测量湖泊的水深,湖中各处的水深是不一样的。如图:001223000023553200014342210001100110000000000可以给湖面
3、打上格子,测量每个格子的深度。“0”表示地面,数字1,2,3,4,5表示水深,单位为m。每一格的大小为5mX5moInput有若干种案例。每个案例的第一行是两个int型数m、n,表示湖面所处的位置有mXn格,0、0表示结束。接着有m行、n列的数字表示湖面各处水深情况。Ouput每种情况输出一行,先输出“Caseid:”,id为序号,然后输出湖面的面积和湖的平均水深。平均水深二总的水深/湖面面积即有水的格子数。SampIeInput5000000902100013410253102540033200022100011
4、000000SampIeOutputCase1:525mXm2.33m#includevoidmain()inta[100][100];irrtm,i,n,j,count,th;doubIesum;while(scanf(“%d%d”,&m,&n)!=E0F){if(m=0&&n=0)break;for(i=1;i<=m;i++)for(j=1;j<=n;j++)scanf("%d",&a[订[j]);count二0;sum二0;for(i=1;i<=m;i++)for(j=1;j<=n;j++)
5、{if(a[i][j]!=0){sum二sum+a[i][j];count++;})printf("Case%d:%dmXm%.21fm",t,count*25,sum/count);t++;Problem1326海量排序数构Description小明的电脑不断接收到数据,数据有大几百万个,为了让这些数据有序,请你编程按从小到大进行排序。Input输入有若干种情况,每种情况一行。每行的第一个数是n(100000<=n6、。SampIeInput30741034-904542923SampIeOutput047-90234445923Hint实际上的数的个数有:100000=000000个#include#include#defineTRUE1#defineFALSE0intr[1000001];voidsift(intr[],intk,intm)/*假设r[k..m]是以r[k]为根的完全二叉树,且分别以r[2k]和r[2k+1]为根的左、右子树为大根堆,调整r[k],使整个序列r[k.,m]
7、满足堆的性质*/{intt;inti,j;intx;intfinished;t二r[k];/*暂存”根“记录r[k]*/x二r[k];i二k;j=2*i;finished=FALSE;whiIe(j<=m&&!finished){if(j=r[j])finished二TRUE;/*筛选完毕*/else{r[i]=r[j];i=j;j=2*i;}/*继续筛选*/}r[订二t;/*r[k]填入到恰当的位置
8、*/voidcrt_heap(intr[],intlength)/*对记录数组r建堆,length为数组的长度*/inti,n;/*自第[n/2]个记录开始进行筛选建堆*/n二length;for(i=n/2;i>=1;—i)sift(r,i,n);}voidHeapSort(intr[],intlength)/*对r[1..n]进行堆排序,执行本算法后,r