- 传统题1000ms128MiB
问题描述
给定一个整数 n,在 1∼n 中选择若干个数字(每个数字只能被选一次),使他们的和恰好为 k ,请问有多少种方案?
输入格式:
两个整数 n(1≤n≤1000),代表可选数字的数值上限; k(1≤k≤5000) ,代表求和的结果。
输出格式:
一个整数,表示方案数。
#include <bits/stdc++.h>
using namespace std;
int n,k,sum=0;
void f(int i,int m){
if(m==0){
sum++;
return;
}
if(i>n||i>m) return;
f(i+1,m-i);
f(i+1,m);
}
int main() {
cin>>n>>k;
f(1,k);
cout<<sum;
return 0;
}