c语言穷举法傻瓜教程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
2.百钱买百鸡问题
#include<stdio.h>
main()
{ int i , j , k; /*准备输出格式*/ printf("\t 公鸡\t 母鸡\t 小鸡\n"); for(i=0;i<=20;i++) for(j=0;j<=33;j++) { k=100-i-j; if(k%3==0 && i*5+j*3+k/3==100) printf("\t%d\t%d\t%d\n",i ,j ,k); }
解: #include<stdio.h> main() { int i,jຫໍສະໝຸດ Baiduk;
for(i=0;i<=9;i++) for(j=0;j<=12;j++)
{ k=36-i-j;//消去参数需放在最后一个 for 循环里 面
if(k%2==0&&i*4+j*3+k*0.5==36) printf("%d\t%d\t%d\n",i,j,k); }
}
例 2 : 36 块砖, 36 人搬。男搬 4 ,女搬 3 , 两个小儿抬一砖。要求一次全搬完。问需男、女、小 儿各若干(必须都有)? 请同学们先分析第一步:问题所涉及的情况 ;
analysis:都男的搬,需 9 人;都女的搬,需 12 人, 都小孩搬,需 72 人; 小孩书需要是 2 的整数倍;
}
作业:
换零钞问题:一张 100 元,换 成 20,10,5,1 面值的零钞, 每种至少一张,共有哪些换 法,总计多少种换法?
都换 20:5 张;----i 都换 10:10 张;----j 都换 5:20 张;----k 都换 1:100 张----t t=100-i-j-k;
解: #include<stdio.h> main()
if((i+j)>100&&j!=i) {
count++; printf("i=%d\tj=%d\n",i,j);
} } printf("循环次数为%d\n",count); }
2.从 1 到 100 的自然数中,每 次取出两个数,要使它们的和 大于 100,共有哪些取法,总 计多少种取法?
#include<stdio.h>
main() {
static int count=0; int i,j; for(i=1;i<=100;i++)
for(j=1;j<=100;j++) {
{ int i,j,k,t;
for(i=1;i<=5;i++) for(j=1;j<=10;j++) for(k=1;k<=20;k++)
{ t=100-i*20-j*10-k*5;
if(i*20+j*10+k*5+t==100&&t>0) printf("%d\t%d\t%d\t%d\n",i,j,k,t); } }
穷举法
1.密码箱问题
#include<stdio.h> main() {
int i,key; printf("请设定旅行箱的密码(000-999):"); scanf("%d",&key); printf("\n 你的旅行箱密码是:"); for(i=0;i<=999;i++)
if(i==key) if(i<10)printf("%d\n",i); else if(i<100)printf("%d\n",i); else printf("%d\n",i);
相关文档
最新文档