您的位置:首页 > 其它

Hdu 1398 Square Coins//整数划分(二)

2013-06-08 19:28 447 查看
这道题对整数能够拆分的数有个限制,必须是完全平方数,但是只需要稍微改动一点就可以做了。PS:其实我想用母函数做的,但是代码有点多,o(╯□╰)o!

下面是代码:

/*Hdu 1398 Square Coins
整数划分
PS:赶脚自己的代码写的有点繁琐,o(╯□╰)o!
*/
#include<iostream>
using namespace std;
const int maxn = 310;
int n;
int f[maxn][maxn];
int main()
{
while(cin>>n)
{
if(!n) break;
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*j <= i; j++)
{
int p = j*j;
int q = (j-1)*(j-1);
if(i == p) f[i][p] = f[i][q] + 1;
else
{
if(i - p <= p) f[i-p][p] = f[i-p][i-p];
f[i][p] = f[i][q] + f[i-p][p];
}
f[i][i] = f[i][p];
}
}
for(int i = n; i >= 1; i--)
{
if(f
[i] != 0)
{
cout<<f
[i]<<endl;
break;
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学