- #include <iostream>
- using namespace std;
- int main()
- {
- int a,b,c,count=0;
- cout<<"小明借书给三位小朋友书的方案有:"<<endl;
- for(a=1;a<=5;a++) //穷举a借5本书中的1本的全部情况
- for(b=1;b<=5;b++) //穷举b借5本书中的一本的全部情况
- for(c=1;c<=5;c++) //穷举c借5本书中的1本的全部情况
- if(a!=b&&c!=a&&c!=b) //判断三个人借的书是否不同,(a-b)*(b-c)*(c-a)!=0更好
- {
- ++count;
- cout<<count<<": "<<a<<", "<<b<<", "<<c<<endl;//输出方案
- }
- return 0;
- }
代码来自贺老师
将输出序号,每次排列的书号的输出 加入for 循环体内 输出每个方案的具体内容。
对于几个不同题目,基本套路是 穷举类型,嵌套循环内部加限制条件来挑出符合题意的选项并输出。
可以做优化的地方是尽量来减少无意义的穷举,比如在“奥赛题“中,出现相同的数字就不符合题意,当前两次嵌套循环出现出现相同的时候,就可以continue了,第三次嵌套再判断一次,第四次再判断一次,很有效的减少了无意义的答案的列举。
ps:小九九那道题对于for后面的{} 再不同地方括会产生不同的结果。。。。开始纠结了好久为什么输出的形式不正确,后来想了一会注意到了这个问题
关于for循环
上次做了一个时间复杂度的测试。
在四重循环的模式下,n<30时,时间控制在1s内,n<120,时间控制在15s内,n=130时,s=34s。
在数据越大的时候,粗暴的嵌套造成的时间上的复杂的成爆发增长。
所以算法很重要记得做优化不要写垃圾代码啊啊啊啊啊。。。。。。。。。。。
本文通过一个具体的程序实例展示了如何使用穷举法解决特定的组合问题,即小明向三位小朋友分配五本书的不同方案。文章重点介绍了使用C++实现的多重循环结构,并通过条件判断确保每种方案的独特性。
5097

被折叠的 条评论
为什么被折叠?



