您的位置:首页 > 其它

poj 3181 把n 划分成 不大于m的若干数字 最大的划分方法 (dp +大数)

2014-03-04 14:06 267 查看
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[1002][26];
int n,k;
int main()
{
while(scanf("%d%d",&n,&k)>0)
{
memset(dp,0,sizeof(dp));
//dp[1][25]=1;
dp[0][25]=1;
for(int i=1; i<=k; i++)
for(int j=i; j<=n; j++)
{
for(int m=25; m>=0; m--)
{

dp[j][m]+=dp[j-i][m];
if(dp[j][m]>=10000)
{
dp[j][m-1]+=dp[j][m]/10000;
dp[j][m]=dp[j][m]%10000;
}
}
}
int i=0;
while(dp
[i]==0)
i++;
printf("%d",dp
[i]);
i++;
for(; i<=25; i++)
printf("%04d",dp
[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: