1 solutions
-
0
C :
#include <stdio.h> #define maxn 300 int f[maxn][maxn]; int n,m; int main() { scanf("%d%d",&n,&m); f[0][0]=1; for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) if (i-j>=0) f[i][j]=f[i-j][j]+f[i-1][j-1]; printf("%d\n",f[n][m]); return 0; }C++ :
#include<iostream> #include<algorithm> #include<cstring> #include<ctime> #include<cmath> #include<string> #include<cstdio> using namespace std; //生成测试数据 void initData() { srand((int)time(NULL)); for(int cas = 0; cas < 10; ++cas) { } } int dfs(int n, int k, int x) { if(k == 1) return 1; if(n == k) return 1; if(n <= 0 || k <= 0) return 0; int s = 0; for(int i = x; i <= n/k; ++i) { s += dfs(n - i, k - 1, i); } return s; } int main() { //freopen("test.in", "w", stdout); //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); //initData(); int n, k; cin>>n>>k; cout<<dfs(n, k, 1)<<endl; return 0; }
- 1
Information
- ID
- 16292
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By