- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)