程序设计算法实验 穷举.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计算法实验一——穷举算法(黑体,三号) 1.穷举简介(小标题:黑体,小四;内容:宋体,五号) 穷举法又称列举法,其基本思想是逐一列举问题所涉及的所有情况。从中寻找满足条件的结果。适用于数量较小的问题。 2.算法流程或设计思想 穷举通常应用循环结构来实现。在循环体中,应用选择结构实施判断筛选,求得所要求的解。使用穷举法的关键是要确定正确的穷举的范围。 3.分析算法的时间复杂度 4.程序设计中的问题及解决方案 5.运行说明(包括实验数据和结果说明) 6.主要程序代码(添加程序注释) 7.对比解决该问题的其他算法(选作) 题目: 有一堆零件(1000-5000个之间),如果以4个零件为一组进行分组,则多2个零件;如果以7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件。编程求解这堆零件总数。 参考答案: #includestdio.h void main() { int n,count=0; for(n=1000;n=5000;n++) if(n%4==2n%7==3n%9==5) { printf(%d ,n); count=count+1; if(count%5==0) printf(\n); } printf(\ncount = %d\n,count); } 穷举三位数的水仙花数。水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:13 + 53 + 33 = 153) 参考答案: /* 2. 穷举三位数的水仙花数。 水仙花数是指一个 n 位数 ( n≥3 ), 它的每个位上的数字的 n 次幂之和等于它本身。 (例如:13 + 53 + 33 = 153)*/ #include stdio.h void main() { int a,b,c,d; for(a=100;a=999;a++) { b=a/100; c=a/10-b*10; d=a-b*100-c*10; if(b*b*b+c*c*c+d*d*d==a) printf(%d = %d^3 + %d^3 + %d^3\n,a,b,c,d); } } 穷举真分数递增序列中的第k项的值。(可参考课本P19) 参考答案: #include stdio.h void main() { int a,b,k,n,i,j,h,t,u,c[3000],d[3000]; printf(input the number a,b,k:\n); scanf(%d %d %d,a,b,k); n=0; for(j=a;j=b;j++) {for(i=1;i=j-1;i++) {for(t=0,u=2;u=i;u++) if(j%u==0i%u==0){t=1;break;} if(t==0){n++;c[n]=i;d[n]=j;} } } for(i=1;i=n-1;i++) for(j=1;j=n-i;j++) if(c[j]*d[j+1]c[j+1]*d[j]) {h=c[j]; c[j]=c[j+1]; c[j+1]=h; h=d[j]; d[j]=d[j+1]; d[j+1]=h;} printf(The total number is:n=%d\n,n); printf(the %d is:%d/%d\n,k,c[k],d[k]); } 用精简穷举循环解决百钱百鸡问题。 公鸡5文钱1只, 母鸡3文钱1只, 小鸡一文钱3只。100文钱如何买100只鸡? 参考答案: #includestdio.h void main() { int x,y,z,j=0; printf(possible plans to buy 100 fowls with 100 wen:\n); for(x=0;x=20;x++) /*外层循环控制鸡翁数*/ for(y=0;y=33;y++) /*内层循环控制鸡母数y在0~33变化*/ { z=100-x-y; /*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/ if(z%3==05*x+3*y+z/3==100) /*验证取z

文档评论(0)

yyanrlund + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档