还是说我二维的代码有问题呢代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int S;
cin >> S;
vector<int> sum(S + 1);
sum[0] = 0;
for(int i = 1; i <= S; i++)
{
for(int j = 1; j < i ; j++)
{
if(i % j == 0)
{
sum[i] += j;
}
}
}
vector<vector<int>> dp(S + 1,vector<int>(S + 1));
for(int i = 2; i <= S; i++)
{
for(int j = 1; j <= S; j++)
{
if(j >= i)
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - i] + sum[i]);
}
}
cout << dp[S][S];
return 0;
}