穷举法—韩信点兵
2018-06-18 04:05:11来源:未知 阅读 ()
- 问题描述:
韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数。
按从1至 5报数,最末一个士兵报的数为1;
按从1至6报数,最末一个士兵报的数为5;
按从 1至 7报数,最末一个士兵报的数为 4;
按从 1至 11报数,最末一个士兵报的数为 10。
你知道韩信至少有多少兵吗?
2、【算法思想】
设兵数为x,则按题意x应满足下述关系式:x%5 ==1 && x%6==5 &&x %7==4 && x%11==10
采用穷举法对x从 1开始试验,可得到韩信至少有多少兵。
3、 代码实战:
穷举法,设置标志find
#include<stdio.h> #include "stdlib.h" int main( ) { int x =1;int find = 0; /*设置找到标志为假*/ while (!find) { if (x % 5 == 1 && x % 6 == 5 && x % 7 == 4 && x % 11 == 10) { find = 1; } x++; printf(" x = %d\n", x);} system("pause"); /*解决快闪问题*/ }
运行结果:(运行结果是从1—找到的最小数)
4、其他代码:
goto
1 #include<stdio.h> 2 #include "stdlib.h" 3 int main( ) 4 { 5 int x ; 6 for(x=1; ;x++) 7 { 8 if(x % 5 == 1 && x % 6 == 5 && x % 7 == 4 && x % 11 == 10 ) 9 { printf("最小值是x= %d\n ",x); 10 goto end; 11 } 12 } 13 end:; 14 system("pause"); 15 }
break语句执行代码
1 #include<stdio.h> 2 #include "stdlib.h" 3 int main( ) 4 { 5 int x ; 6 for(x=1; ;x++) 7 { 8 if(x % 5 == 1 && x % 6 == 5 && x % 7 == 4 && x % 11 == 10 ) 9 { printf("最小值是x= %d\n ",x); 10 break; 11 } 12 } 13 14 system("pause"); 15 }
结果相同,不再赘述。
拓展:用标志,求多个解,如5个解
1 #include<stdio.h> 2 #include "stdlib.h" 3 int main( ) 4 { 5 int x ;int f=0; 6 for(x=1; f<5;x++) 7 { 8 if(x % 5 == 1 && x % 6 == 5 && x % 7 == 4 && x % 11 == 10 ) 9 { printf("满足要求的值是x= %d\n ",x); 10 f++; 11 } 12 } 13 14 system("pause"); 15 }
2017-04-16 21:26:44
by-lwb,转载注明出处http://www.cnblogs.com/lwbjyp/p/6719892.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:1018. 打电话
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash