第四周《C语言及程序设计》实践项目40 问题求解方法——穷举
来源:互联网 发布:淘宝物流怎么查询 编辑:程序博客网 时间:2024/06/05 06:46
【项目1-小明借书】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目1-小明借书】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法? * 提示:本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号, * 然后使用穷举的方法。假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。 */ #include<stdio.h>int main(){int a,b,c;for(a=1;a<=5;a++) for(b=1;b<=5;b++) for(c=1;c<=5;c++) { if(a!=b&&b!=c&&c!=a) printf("%d,%d,%d\n",a,b,c); }return 0; }运行结果
知识点
关于穷举用循环效果更佳,把1,2,3赋予实际意义更是一种思想
心得
第一次知道了还可以用编程来解决实际问题,很是新奇,更是感觉到学习编程的乐趣
【项目2-水仙花数】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目2-水仙花数】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:对于三位数字,若各位数字立方和等于该数,该数就是水仙花数。如153:153=1^3+5^3+3^3 */ #include<stdio.h>int main(){int a,b,c,sum=0;for(a=0;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) { sum=a*100+b*10+c; if(sum==a*a*a+b*b*b+c*c*c) printf("%d\n",sum); }}运行结果
心得体会
穷举个位,十位,百位
【项目3-鸡兔共笼】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目3-鸡兔共笼】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:鸡兔共有30只,脚共有90只,问鸡兔各有多少? */ #include<stdio.h>int main(){int i;//鸡有i只,兔有(30-i) for(i=1;i<=30;i++){if(90==2*i+(30-i)*4)printf("鸡有%d只,兔有%d只",i,(30-i)); }}
运行结果
心得
%>_<%实在没有想到直接先用数学解出部分,好笨呀,我
【项目4-换分币】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目4-换分币】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:用一元人民币兑换成1分、2分和5分硬币,有多少种不同的兑换方法?请输出所有可能的方案。 * 提示:根据题意设i,j,k分别为兑换的1分、2分、5分硬币的枚数,则i,j,k的值应满足:i+j*2+k*5=100,根据取值范围构造循环解题即可。 */ #include<stdio.h>int main(){int i,j,k;for(i=0;i<=100;i++) for(j=0;j<=50;j++) for(k=0;k<=20;k++) if(100==i+j*2+k*5) printf("%d %d %d\n",i,j,k); return 0;}
运行结果
心得
没有优化...
【项目5-年龄几何】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目5-年龄几何】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 * 提示:设数列的首项为n,公差为a,则前4项之和为"4*n+6*a",前4 项之积为"n*(n+a)*(n+a+a)*(n+a+a+a)"。同时"1<=a<=4","1<=n<=6"。可采用穷举法求出此数列。 */ #include<stdio.h>int main(){int a,sum,n,i;for(a=1;a<=4;a++) for(n=1;n<=6;n++) if(n*4+a*6==26&&n*(n+a)*(n+2*a)*(n+3*a)==880) { printf("%d",n); for(i=1;i<20;i++) { sum=n+a*i; printf(",%d",sum); } printf("\n"); } return 0;}
运行结果
心得
没有想到。。好笨
【项目6-三色球问题】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目6-三色球问题】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭配? * 提示:设任取的红球个数为i,白球个数为j,则黒球个数为8-i-j, * 根据题意红球和白球个数的取值范围是0~3,在红球和白球个数确定的条件下,黒球个数取值应为8-i-j<=6。 */ #include<stdio.h>int main(){int r,w,b;int count;for(r=0;r<=3;r++) for(w=0;w<=3;w++) { b=8-r-w; if(b<=6) { printf("红:%d 白:%d 黑:%d\n",r,w,b); count++; } } printf("%d",count); return 0;}
运行结果
【项目7-找数字】
第一个没啥意思,不写了
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目7-找数字】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:在下面的加法算式中,不同的符号代表不同的数字,相同的符号代表相同的数字。请设计程序求出"都、要、学、C"4个符号分别代表的数字。 */ #include<stdio.h>int main(){int dou,yao,xue,c,sum;//命名很重要,关系到程序的阅读性for(dou=0;dou<3;dou++)//貌似dou可以为0样的 for(yao=0;yao<10;yao++) for(xue=0;xue<10;xue++) for(c=0;c<10;c++)//c小于10和c小于8问题不大 if((dou-yao)*(dou-xue)*(dou-c)*(yao-xue)*(yao-c)*(xue-c)!=0)//一种很好的筛选方法 { sum=dou*1000+yao*2*100+xue*3*10+4*c; if(sum==2008) printf("都:%d 要:%d 学:%d C:%d\n", dou, yao, xue, c); } }
运行结果
【项目8-谁是小偷】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目8-谁是小偷】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”; * B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷? * 提示:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用 * 四重循环穷举a,b,c,d可能的取值的组合,对每一种组合判断其是否符合题目中给出的约束。最后结论:C是小偷。 */ #include<stdio.h>int main(){int a,b,c,d;for(a=1;a>=0;a--) for(b=1;b>=0;b--) for(c=1;c>=0;c--) for(d=1;d>=0;d--) if((a==0)+(c==1)+(d==1)+(d==0)==3&&a+b+c+d==1) printf("A:%d B:%d C:%d D:%d",a,b,c,d); return 0; }
运行结果
心得
蛮过瘾的,以前见过这类脑经急转弯,没想到还可以用编程来做
【项目9-污损的单据】
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目9-污损的单据】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:有等式[※×(※3+※)]2=8※※9,其中※处为1个数字,滴上了墨水无法辨认。请编程找出※表示哪个数字 */ #include<stdio.h>int main(){int a,b,c,d,e,sum;for(a=1;a<=9;a++) for(b=1;b<=9;b++) for(c=1;c<=9;c++) for(d=1;d<=9;d++) for(e=1;e<=9;e++) { sum=a*(b*10+3+c); if(sum*sum==8009+d*10+e*100) printf("[%d*(%d3+%d)]^2=8%d%d9\n",a,b,c,d,e);}return 0;}运行结果
【项目9-污损的单据】2
/* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目9-污损的单据】.cpp * 作 者:张易安 * 完成日期:2016年 8 月 30 日 * 版 本 号:v1.0 * * 问题描述:有等式[※×(※3○※)]2=8※※9,其中※处为1个数字,○处为+、-、×、÷四个运算符之一, * 现滴上了墨水无法辨认。请编程找出※表示哪个数字,○表示哪个运算符。 */ #include<stdio.h>int main(){int a,b,c,d,e,sum;for(a=0;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) for(e=0;e<10;e++) { sum=a*(b*10+3+c); if(sum*sum==8009+d*100+e*10) printf("等式为:[%d×(%d3+%d)]^2=8%d%d9\n",a,b,c,d,e); sum=a*(b*10+3-c); if(sum*sum==8009+d*100+e*10) printf("等式为:[%d×(%d3-%d)]^2=8%d%d9\n",a,b,c,d,e); sum=a*((b*10+3)*c); if(sum*sum==8009+d*100+e*10) printf("等式为:[%d×(%d3*%d)]^2=8%d%d9\n",a,b,c,d,e); if(c!=0)//没有考虑到分母为0 { sum=a*((b*10+3)/c); if(sum*sum==8009+d*100+10*e) printf("等式为:[%d×(%d3/%d)]^2=8%d%d9\n",a,b,c,d,e); }} }
运行结果
0 0
- 第四周《C语言及程序设计》实践项目40 问题求解方法——穷举
- 第四周《C语言及程序设计》实践项目39 问题求解——求素数
- 第二周《C语言及程序设计》实践项目35 问题求解方法——迭代
- 第四周《C语言及程序设计》实践项目2 模块化程序设计及C语言中的函数
- 《C语言及程序设计》实践项目——穷举法解题
- 第四周《C语言及程序设计》实践项目43 从文本文件中读入数据
- 第四周《C语言及程序设计》实践项目7 返回指针的函数
- 第四周《C语言及程序设计》实践项目16 数组的引入
- 第四周《C语言及程序设计》实践项目22 用指针法访问数组元素
- 第四周《C语言及程序设计》实践项目20 经典:查找的艺术
- 第四周《C语言及程序设计》实践项目26 实现线性表基本操作的函数
- 第四周《C语言及程序设计》实践项目32 二维数组及其定义
- 第四周《C语言及程序设计》实践项目37 操作字符串数组
- 第四周《C语言及程序设计》实践项目5 认识递归
- 第四周《C语言及程序设计》实践项目11 体验结构体
- 第四周《C语言及程序设计》实践项目14 开发一个电子词典
- C语言:问题求解方法-穷举
- 第1周 C语言及程序设计初步 例程-7 问题求解方法——迭代
- LNK1123:转换到COFF期间失败:文件无效或损坏
- Listener之实现ServletContextListener接口
- 理解Hash表
- WebStorm license server address
- 【Seen带你看世界1】:大妈,北上广楼市,黄金
- 第四周《C语言及程序设计》实践项目40 问题求解方法——穷举
- 数组去重的方法
- Machine Learning(Stanford)| 斯坦福大学机器学习笔记--第一周(2.线性回归,代价函数)
- C++类的成员函数
- Struts2的Action方法调用
- 牛客网答题笔记---字符移位
- JAVA POI 创建 Excel文件打开加密 并输出到输出流
- 对互斥锁的一种封装
- Maven的pom.xml文件结构之Build配置build