2 条题解
- 
  0
7月17作业的第二题 传送门:题目详情 - 整数划分 - JMYSOJ (jmfes.com) #include<bits/stdc++.h> using namespace std;
long long dp[1010]; const int N = 1e9 + 9;
int main(){ freopen("divide.in","r",stdin); freopen("divide.out","w",stdout); int v; cin >> v; for(int j = 1; j <= v; j ++){ memset(dp, 0, sizeof(dp)); dp[0] = 1; int n; cin >> n; for (int i = 1; i <= n; i ++) { for (int j = i; j <= n; j ++) { dp[j] = (dp[j - i] + dp[j]) % N; } } cout << dp[n] % N << endl; }
return 0;}
 - 
  0
#include<bits/stdc++.h> #define int long long using namespace std; const int inf = 0x3f3f3f3f; const int N = 1001; int dp[N][N]; //vector<int> c[N];//重量 //vector<int> w[N];//价值 //int sum[N]; int c[N]; int w[N]; const int ans = 1e9 + 9; //int s[N];//数量 //dp[i][j] //代表前i个物品时背包体积最大为j时物品最大价值 //dp[i - 1][j] 不选 //dp[i - 1][j - c[i]] + w[i] 选 signed main(){ freopen("divide.in" , "r" , stdin); freopen("divide.out" , "w" , stdout); int m; cin >> m; //dp[i][j] //表示前i个数和刚好为j的方案数 while(m --){ memset(dp , 0 , sizeof(dp)); int n; cin >> n; dp[0][0] = 1; for(int i = 1 ; i <= n ; i ++){//数 for(int j = 0 ; j <= n ; j ++){//容量 if(j >= i){ dp[i][j] = (dp[i - 1][j] + dp[i][j - i]) % ans; }else{ dp[i][j] = dp[i - 1][j]; } } }
cout << dp[n][n] % ans << endl; } return 0;}
 
- 1
 
信息
- ID
 - 2310
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - (无)
 - 标签
 - (无)
 - 递交数
 - 0
 - 已通过
 - 0
 - 上传者