题目描述:100分成六个数的和。 显然是一道dfs的题目,硬的搜索即可。 首先,把一百分成六个数的和,想到的是枚举,套6个循环,简单,暴力,明显; 但还是手打了一遍搜索,搜索函数里面有三个变量: f:数到第几个数了; m:前一个数的大小,要求后面的数都小于他; l:剩下的数的总和; 再加上首尾的特判,就写成了。 下面是我写的代码: ///100分成六个数的和 #include<iostream>#include<cstdio> using namespace std; const int mm=100; int counts; int a[8]; void dfs(int f,int m,int l) { if(f==6&&l>=m) { counts++; for(int i=1;i<=5;i++) { cout<<a[i]<<'+'; } cout<<l<<endl; } else if(f>=7||m>l) return; else { for(int i=m;i<=l;i++) { a[f]=i; dfs(f+1,i,l-i); } } } int main() { dfs(1,1,mm); cout<<counts; return 0; } ///如果发现错误,及时提醒我,谢谢。 |
dfs大楼之100分成6个数的和
最新推荐文章于 2023-07-13 13:47:12 发布