直接代码吧:
/*Hdu 1028 Ignatius and the Princess III
整数划分
*/
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 150;
int f[maxn][maxn];
int n;
int main()
{
while(cin>>n)
{
for(int i = 0; i <= n; i++)
for(int j = 0; j <= n; j++) f[i][j] = 0;
f[1][1] = 1;
for(int i = 2; i <= n; i++)
{
for(int j = 1; j <= i; j++)
{
if( j!=i ) f[i][j] = f[i][j-1] + f[i-j][j];
else f[i][j] = f[i][j-1] + 1;
if(i > j) f[j][i] = f[j][j];
}
}
cout<<f[n][n]<<endl;
}
return 0;
}
本文提供了一种解决Hdu1028 Ignatius and the Princess III问题的方法,该问题涉及整数划分算法。通过使用动态规划技术,代码实现了计算特定整数的所有可能划分方式。
&spm=1001.2101.3001.5002&articleId=9057723&d=1&t=3&u=d06e31ae302b4013a46d63b649201da3)
1639

被折叠的 条评论
为什么被折叠?



