穷举法:在条件里确定答案的范围。遍历所有路径找到合适的结果

百马百担问题:有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮一担,问有多少种方法,大中小马各几匹。

分析:从大马开始从0到100,确定大马数量范围,然后是中马、小马

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int main()
{int i,j,k;int n=0;for(i=0; i<100; i++){if(3*i<=100){for(j=0; j<100; j++){if(3*i+2*j<=100){k=(100-3*i-2*j)*2;if(k+i+j==100){printf("大马%d匹,中马%d匹,小马%d匹",i,j,k);printf("\n");n++;}}}}}printf("共有%d种方法",n);
}

1兔换2鸡,2兔换3鸭,5兔换7鹅。某人用20只兔子换得鸡,鸭,鹅共30只,问其中鸡、鸭、鹅各几只。

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{int a,b,c;int i;for(a=0; a<=30; a+=2){for(b=0; b<=30; b+=3){c=0;c+=7;if(c&&a/2+(b*2)/3+(c*5)/7==20&&a+b+c==30){printf("鸡%d鸭%d鹅%d\n",a,b,c);}}}
}

牛牛有一个鱼缸,鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i](1<=i<=n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸里存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小鱼另外一条鱼B的大小的2~10倍(包括两倍大小和十倍大小)时鱼A会吃掉鱼B。考虑这种情况,牛牛要放入的鱼需要保证一下几点:

(1)放进去的鱼是安全的,不会被其他鱼吃掉。

(2)这条鱼放进去也不能吃掉其他鱼。

(3)鱼缸里面存在的鱼已经相处了很久,不考虑他们互相捕食。

现在知道新放入鱼的大小范围minSize,maxSize,牛牛想知道有多少种大小的鱼可以放入这个鱼缸。

Input

输入数据包括3行,第1行为新放入鱼的尺寸[minSize,maxSize](1<=minSize、maxSize<=1000),以空格分隔,第2行为鱼缸里面已经有鱼的数量n(,<=n<=50),第3行为已经有的鱼的大小fishSize[i](1<=fishSize[i<=1000]),以空格隔开。

Output

输出有多少种大小的鱼可以放入这个鱼缸,考虑鱼的大小都是用整数表示。

Sample Input

1 12
1
1
sample Output
3

分析:只需要判断放入鱼的条件,大于原来鱼的2倍,小于原来鱼儿的10倍,或者原来鱼儿大于放入鱼的2倍,小于放入鱼的10倍,则不满足条件,使得标志flag=0;当flag=1时,表示该大小的鱼儿可以放入,con计数加1。

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 1000
using namespace std;
int main()
{int maxsize,minsize;int fishsize[m],n;int con=0;cin>>minsize>>maxsize;cin>>n;int i;for(i=0;i<n;i++){cin>>fishsize[i];}int flag;int j;for(j=minsize;j<=maxsize;j++){flag=1;for(i=0;i<n;i++){if((j>=fishsize[i]*2&&j<=fishsize[i]*10)||(fishsize[i]>=j*2&&fishsize[i]<=j*10)){flag=0;break;}}if(flag==1){con++;}}cout<<con<<endl;
}

100块砖100人来搬,男人一人搬4块,女人一人搬3块,小孩3人抬一块,问男,女,小孩各几人?

分析百马百担一样的问题,在这里优化一下,可以得知男人最多25人,女人最多33人。要把100砖搬完,剩下的砖小孩搬,100-男人和女人搬的砖数量等于小孩搬的数量,乘3为小孩的数量,然后判断总数是否等于100.

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 1000
using namespace std;
int main()
{int a,b,c;for(a=0;a<=25;a++){for(b=0;b<=33;b++){c=(100-a*4-b*3)*3;if(a+b+c==100){printf("男%d女%d孩%d\n",a,b,c);}}}}

有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复… 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。 等船长醒
来,发现海盗船搁浅了。他在航海日志中写到:“…昨天,我正好喝了一瓶…奉劝大家,开船不喝酒,喝酒别开船…”

请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数,…

例如,有一种可能是:20,5,4,2,0

分析:可以知道一共有四轮,而且第四轮剩下的人数为0;1/s1+1/s2+1/s3+1/s4=1(一瓶酒),s1+s2+s3+s4<=20;而且每一轮的人数少于上一轮的人数

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 1000
using namespace std;
int main()
{int s1,s2,s3,s4;for(s1=1; s1<=20; s1++){for(s2=1; s2<=20; s2++){if(s2<s1){for(s3=1; s3<=20; s3++){if(s3<s2){for(s4=1; s4<=20; s4++){if(s4<s3){if((s1*s2*s3+s1*s2*s4+s1*s3*s4+s2*s3*s4)==s1*s2*s3*s4){printf("%d,%d,%d,%d,0\n",s1,s2,s3,s4);}}}}}}}}
}

换分币: 将5元的人民币兑换成1元,5角和1角的硬币,共有多少种不同的兑换方法?

分析:统一单位

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 1000
using namespace std;
int main()
{int a,b,c;//一元,五角,一角int n=0;for(a=0;a<=5;a++){for(b=0;b<=10;b++){for(c=0;c<=50;c++){if(a*10+b*5+c*1==50){n++;cout<<a<<" "<<b<<" "<<c<<" "<<endl;}}}}cout<<n<<endl;
}

韩信点兵问题。问题描述:韩信有一队兵,他想知道有多少人,便让士兵排队报数,按从1至5报数,最末一个士兵报的数为1,按从1至6报数,最末一个士兵报的数为5,按从1至7报数,最后一个士兵报的数为4,最后再按从1至11报数,最后一个士兵报的数为10,请编程计算韩信至少有多少兵?

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 1000
using namespace std;
int main()
{int x;while(1){if((x-1)%5==0&&(x-5)%6==0&&(x-4)%7==0&&(x-10)%11==0){cout<<x<<endl;break;}elsex++;}
}

完数问题:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
``找出1000以内的所有完数。

#include<iostream>
#include<cmath>
#include<algorithm>
#define m 100
using namespace std;int main()
{int a,i,k;int arr[m];cin>>a;for(i=2;i<=a;i++){int j,sum=0,k=0;for(j=1;j<i;j++){if(i%j==0){arr[k]=j;k++;}}for(j=0;j<k;j++){sum=sum+arr[j];}if(sum==i){cout<<i<<endl;}}
}

【算法】穷举法习题练习相关推荐

  1. JS if 水仙花数 游乐园门票计算 闰年 三元运算符 for循环 算法 穷举法 While 拔萝卜 等差数 随机数函数random 区间数 猜数字

         算法题 水仙花数  数学方法 字符串方法   游乐园门票计算  Switch   闰年 <body> <script>var month = Number(promp ...

  2. 【算法】最直接的算法——穷举法详解

    第三章 穷举法 一.基本概念 穷举法又称为枚举法或者蛮力法,是一种简单直接解决问题的方法,常常是基于问题的直接描述去编写程序,比如说求n的阶乘,那么就直接一个循环n次的for循环. 穷举法依赖的基本技 ...

  3. java 穷举法求水仙花数_常用算法-穷举法

    穷举法又称为枚举法,它是在计算机算法设计中用得最多的一种编程思想.它的实现方式是:在已知答案范围的情况下,依次地枚举该范围内所有的取值,并对每个取值进行考查,确定是否满足条件.经过循环遍历之后,筛选出 ...

  4. 百鸡问题用计算机什么法解决,《穷举法解决问题》教学设计

    一.教学目标 1.知识与技能 ⑴了解穷举法的基本概念及用穷举法设计算法的基本过程. ⑵分析建立正确的数学模型,归纳穷举法穷举技巧. ⑶能够根据具体问题的要求,使用穷举法设计算法,编写程序求解问题. 2 ...

  5. 算法设计思想(1)— 穷举法

    本文系 王晓华 老师 GitChat [算法应该怎么玩]课程笔记. 1. 穷举法概念 穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称. 数学上也 ...

  6. 【最优化方法】穷举法 vs. 爬山法 vs. 模拟退火算法 vs. 遗传算法 vs. 蚁群算法

    一. 穷举法 列举所有可能,然后一个个去,得到最优的结果.如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解).这种算法得到的最优解肯定是最好的,但也是效率最低的.穷举法虽然能得到最好的最优 ...

  7. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法

    算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...

  8. 常用算法总结(穷举法、贪心算法、递归与分治算法、回溯算法、数值概率算法)

    博主联系方式: QQ:1540984562 微信:wxid_nz49532kbh9u22 QQ交流群:892023501 目录 1.穷举法 2.贪心算法 3.递归与分治算法 4.回溯算法 5.数值概率 ...

  9. 【算法】蛮力法/穷举法/枚举法 的基本问题分析

    炮兵问题的优化,设立逻辑数组 蛮力法设计思想 有策略地穷举 + 验证 制定穷举策略 避免重复 简单来说,就是列举问题所有可能的解,然后去看看是否满足题目要求,是一种逆向解题方式.(我也不知道答案是什么 ...

最新文章

  1. 腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具
  2. 使用 Python 的基于边缘和基于区域的分割
  3. 「硅仙人」吉姆 · 凯勒:我在特斯拉是最闲的员工,却要在英特尔管一万人
  4. 利用蒙特卡算法仿真二进制双极性基带通信系统
  5. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  6. get请求可以传数组吗_王源 袁冰妍 孟美岐 手套在大片中的时尚,普通人可以get吗...
  7. 『转』Dr.Web Security Space 8 – 免费3个月
  8. 前端 省市区三级联动
  9. 树莓派4支持多大tf卡_树莓派入门指南(Raspberry Pi)
  10. 2019届中国银联面试总结(内推上海岗,合肥面试)
  11. 【三 HLS】HLS实现肤检测
  12. [vue-ts]ts版本问题合集
  13. UFS/EMMC压力测试
  14. 6.0 深度学习图片常见转换操作
  15. 《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第4章 CC2530热释电红外传感器
  16. 朋友结婚了,新娘不是我
  17. linux的浏览器大全,Linux下9款浏览器对比
  18. Linux常用命令-权限管理命令
  19. java自动识别图片验证码插件_JMeter开发插件——图片验证码识别
  20. 基于SSM实现高校后勤报修系统

热门文章

  1. AutoCad二次开发原理
  2. iview template模式_iview render的使用
  3. 本地计算机启动的oracle,Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案...
  4. 不是吧!都2021年了!软件测试工程师还要加班撸代码吗?
  5. 【免费wifi上网软件】80后创业者的自白信——我和好基友走上创业这条不归路
  6. MySQL导入中文乱码解决之道
  7. jeesite创建用户
  8. return 1和return 0的区别
  9. 太有意思啦,谁研究的哪
  10. Linux学习篇之用户与用户组