dfs大楼之100分成6个数的和

论坛 期权论坛 脚本     
匿名技术用户   2021-1-4 04:53   29   0

题目描述: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;

}

///如果发现错误,及时提醒我,谢谢。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP