算法学习重要.docVIP

  • 10
  • 0
  • 约4.51千字
  • 约 8页
  • 2017-08-05 发布于重庆
  • 举报
算法学习重要

韩信点兵。 #include stdio.h void main() { longint x; x=65; while(1) { x=x+66; if(x%5==1 x%7==4) { printf(至少有兵: %ld个。,x); break; } } } 键盘输入10个数,进行折半查找。※ #include stdio.h void main () { int a[10],mid,high,low,i,num; printf(请按升序输入10个数:); for(i=0;i=9;i++) scanf(%d,a[i]); printf(请输入要查找的数:); scanf(%d,num); low=0; high=9; mid=(low+high)/2; while(a[mid]!=numlow=high) { if(numa[mid]) { low=mid+1; mid=(low+high)/2; } else { high=mid-1; mid=(low+high)/2; } } if(low=high) printf(查找成功, 为a[%d]!\n,mid); else printf(查找不成功!\n); } 输出斐波拉契数列:1,1,2,3,5,8…….的前n项。(每行输出10个数) ※※ #includestdio.h void main() { int i,j; int N1,N2,N3; N1=1; N2=5; printf(%d %d,N1,N2); j=3; for(i=3;i=40;i++) { N3=N1+N2; printf(%5d,N3); N1=4; N2=1; j++; if(j10) { printf( ); j=1; printf(\n); } } 输出斐波拉契数列:1,1,2,3,5,8……的前n项的和。 ※※ #includestdio.h void main() { int i; long int f1,f2; f1=1; f2=1; printf(%161d%161d,f1,f2); for(i=2;i=20;i++) { f1=f1+f2; f2=f1+f2; printf(%161d%161d,f1,f2); if(i%2==0) printf(); } } 猴子爬山问题求解。 一个顽猴在一座有30级台阶的小山上爬山跳跃,猴子上山一步可跳1级,或跳3级,试求上山的30级台阶有多少种不同的爬法。 ※※ #includestdio.h void main () { int i,n; long f[1000]; printf(请输入台阶总数n:); scanf(%d,n); f[1]=1; f[2]=1; f[3]=2; for(i=4;i=n;i++) f[i]=f[i-1]+f[i-3]; printf(猴子爬%d级台阶共有%1d种不同的爬法\n,n,f[n]); } 水手分椰子问题。 五个水手来到一个岛上,采了一堆椰子。一段时间后,第一个水手醒来,悄悄地将椰子等分成五份,多出一个椰子,便给了旁边的猴子,然后自己藏起一份,再将剩下的椰子重新合在一起。不久,第二名水手醒来,同样将椰子等分成五份,恰好也多出一个,也给了猴子。然后自己也藏起一份,再将剩下的椰子重新合在一起。以后每个水手都如此分了一次并都藏起一份,也恰好都把多出的一个给了猴子。第二天,五个水手醒来,把剩下的椰子分成五份,恰好又多出一个,给了猴子。原来这堆椰子至少有多少个? ※※ #includestdio.h void main() { int i; double k,y[7],x; i=1; k=1.0; y[1]=k; while(i=5) { i++; y[i]=(4*y[i-1])/5; if(y[i]!=(int)y[i]) { k=k+1.0; y[1]=k; i=1; } } x=5*y[1]+1; printf(至少有椰子数为%.01f\n,x); } 穷举算法。某地搬砖,男人一人搬3块,女人一人搬2块,小孩两人搬一块,共有45人和45块砖,问有多少种搬法并输出? #include stdio.h void main() { int x,g,z; for (x=0;x=45;x++) for(g=0;g=45;g++) for(z=0;

文档评论(0)

1亿VIP精品文档

相关文档