HDU 1028整数拆分DP

HDU 1028整数拆分DP

http://acm.hdu.edu.cn/showproblem.php?pid=1028
整数分解,DP

#include  < iostream >
#include 
< string >


using   namespace  std;

const   int  M = 120 ;
int  p[M + 1 ][M + 1 ]; //p[i][j]表示i能被分成不大于j的数之和的方法数

int  main()
{
    
int n,i,j;
    
for(i=1;i<=M;i++)
        
for(j=1;j<=M;j++)
        
{
            
if(j>i)
                p[i][j]
=p[i][i];
            
else if(i==j)
                p[i][j]
=p[i][i-1]+1;
            
else
                p[i][j]
=p[i][j-1]+p[i-j][j];
        }

    
while(scanf("%d",&n)!=EOF)
    
{
        cout
<<p[n][n]<<endl;
    }

    
return 0;
}


你可能感兴趣的:(HDU 1028整数拆分DP)