楼逸杨
(楼逸杨)
1
枚举集合2
题目ID:8001必做题100分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
10 分
时间限制: 1000ms
空间限制: 32000kB
题目描述
时间限制:1s 空间限制:32M
题目描述:
给定一个整数 nn,从 1, 2, 3, …, n-1, n 中选出若干个数使得他们的和为 n,每个数最多只能选 3 次,请问有多少种方案。
输入格式:
一个整数 nn。(1 ≤ n ≤ 10)(1≤ n≤ 10)
输出格式:
一个整数表示方案数。
样例输入:
2
样例输出:
2
1 个赞
楼逸杨
(楼逸杨)
4
我代码
#include <bits/stdc++.h>
using namespace std;
int n,cnt=0;
void dfs(int k,int sum){
if(k==n+1){
if(sum==n) cnt++;
return ;
}
dfs(k+1,sum+k);
dfs(k+1,sum);
}
int main() {
cin>>n;
dfs(1,0);
cout<<cnt<<'\n';
return 0;
}
2 个赞
周子寓
(zzy10124)
6
额,你怎么这么写的,把:
dfs(k+1,sum+k);
dfs(k+1,sum);
改成:
for(int i=0;i<=3;i++){
f(x+1,s+x*i);
}
3 个赞
周子寓
(zzy10124)
9
枚举集合1能这么写是因为它只能选或不选这个数,也能表示为:
for(int i=0;i<=1;i++){
f(x+1,s+x*i);
}
3 个赞