【C语言程序设计】穷举法典例------韩信点兵问题
【例】. 韩信有一队兵,他想知道有多少人,他让士兵排队报数,按从1到5报数,最末一个士兵报的数为1;按从1到6报数,最末一个士兵报的数为5;按从1到7报数,最末一个士兵报的数为4;最后再从1到11报数,最末一个士兵报的数为10.请编程计算韩信至少有多少兵。
【问题求解方法分析】设兵数为x,则按题意应满足以下关系式:
#include<stdio.h>
int main()
{int x;for(x=0;x<3000;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);}}return 0;
}
运行结果:
这里我们是假设韩信有3000兵,属于“瞎猫碰到死耗子”,如果真正的解不在这个范围内,那么程序运行之后将一无所有。如果没有x<3000的限制条件,那么又是怎样的结果呢?显然一定会找到正解,而且不止一个正解,更严重的是程序将进入一个死循环。所以这个时候我们就可以用break语句程序如下:
#include<stdio.h>
int main()
{int x;for(x=0;;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);break;}}return 0;
}
由于本例中,程序退出循环以后什么事情也不做,直接结束程序的运行,因此还可以调用函数exit()来直接结束程序的运行。程序如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{int x;for(x=0;;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);exit(0);}}return 0;
}
可读性更好的方法是使用标志变量,即定义一个标志变量find,标志是否找到了解,先置find为假,表示“未找到”一旦找到了满足给定条件的解,就将find置为真,表示“找到了”。相应的,循环控制表达式取为“find的逻辑非”的值,当find值为0时,即!find为真,表示没找到,继续循环,否则表示已找到,退出循环,程序如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{int x;int find=0;for(x=1;!find;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);find = 1;}}return 0;
}
【C语言程序设计】穷举法典例------韩信点兵问题相关推荐
- 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc
(整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...
- c语言程序设计 doc,C语言程序设计精彩资料100例.doc
C语言程序设计精彩资料100例.doc 转C语言程序设计经典100例[程序1]题目有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数都是多少1.程序分析可填在百位.十位.个位的数字都是1 ...
- 【C语言编程】古典问题:韩信点兵
题目 韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1:按从1至6报数,最末一个士兵报的数为5:按从1至7报数,最末一个士兵报的数为4:最后再按从1至11报数, ...
- c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
<C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...
- c语言穷举法举例,C语言穷举法经典例题.ppt
<C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...
- c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt
c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...
- c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件
枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...
- 穷举法c语言吃饭,C语言穷举法经典例题
枚举法(穷举法),"笨人之法":把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出.,分析:这是个不定方程--三元一次方程组问题(三个变量,两个方程)x+y+z=1005x ...
- C语言程序设计之编程求鸡和兔的只数,用穷举法解决
CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...
- c语言二重循环的盒图怎么画,全国计算机二级C语言程序设计讲义 循环嵌套.ppt...
全国计算机二级C语言程序设计讲义 循环嵌套 第7讲 循环的嵌套 一.continue 语句和 break 语句 1.continue语句 2.break语句 二.循环的嵌套 三.goto语句 葛挑破隶 ...
最新文章
- 人类史上最伟大的 PPT,马斯克的 39 页火星计划PPT
- linux rcs文件中的ip,linux学习笔记之diff和patch命令
- JDK12下的ArrayList源码解读 与 Vector的对比
- mysql取出数据外键_mysql数据表有外键,应注意的几点(目前学习所获得的经验)...
- C/Cpp / 设计模式 / 模板模式
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- redis过期策略和淘汰机制你知道多少?
- java 大文件 处理_用Java处理大文件
- 同步锁 php,python线程中同步锁详解
- 最专注和高效的查词法?网易有道词典笔2.0评测
- 高德地图:No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeInitParam
- VC 控件的字体控制 若将字体设置成“宋体、仿宋—GB2312、隶书、幼圆”中的某一字体时,需将lfCharSet设置成GB2312—CHARSET才使设置的字体有效...
- php生成的apk无法安装,xapk怎么安装
- DM 源码阅读系列文章(七)定制化数据同步功能的实现
- php 修改pdf文件内容,pdf中怎么擦掉某些内容
- Win7怎么设置自动关机?Win7设置自动关机的方法
- 【IntelliJ IDEA】idea多次重装打不开的解决办法
- 教士、神父、教父、牧师有什么区别?
- 考研数学汤家凤 暑期答疑合集
- 简单的CSV文件读取,C语言实现