UVa 11137 Ingenuous Cubrency

UVa 11137 Ingenuous Cubrency
昨天和小猪商量分工问题,我主攻DP和数学,他主攻图论。从今天开始做DP。
以下是我的代码:
/*
 * Author:  lee1r
 * Created Time:  2011/8/3 10:55:57
 * File Name: uva11137.cpp
 
*/
#include
< iostream >
#include
< sstream >
#include
< fstream >
#include
< vector >
#include
< list >
#include
< deque >
#include
< queue >
#include
< stack >
#include
< map >
#include
< set >
#include
< bitset >
#include
< algorithm >
#include
< cstdio >
#include
< cstdlib >
#include
< cstring >
#include
< cctype >
#include
< cmath >
#include
< ctime >
#define  L(x) ((x)<<1)
#define  R(x) (((x)<<1)+1)
#define  Half(x) ((x)>>1)
#define  lowbit(x) ((x)&(-(x)))
using   namespace  std;
const   int  kInf( 0x7f7f7f7f );
const   double  kEps(1e - 11 );
typedef 
long   long  int64;
typedef unsigned 
long   long  uint64;

int  kList[ 27 ];
int64 d[
10007 ][ 22 ];

void  Init()
{
    
int  kList[ 27 ];
    
for ( int  i = 1 ;i <= 21 ;i ++ )
        kList[i]
= i * i * i;
    memset(d,
0 , sizeof (d));
    
for ( int  i = 0 ;i < 22 ;i ++ )
        d[
0 ][i] = 1 ;
    
for ( int  i = 1 ;i < 10000 ;i ++ )
        
for ( int  j = 1 ;j <= 21 ;j ++ )
        {
            d[i][j]
= d[i][j - 1 ];
            
if (i >= kList[j])
                d[i][j]
+= d[i - kList[j]][j];
        }
}

int  main()
{
    
// freopen("data.in","r",stdin);
    
    Init();
    
    
int  n;
    
while (scanf( " %d " , & n) == 1 )
        cout
<< d[n][ 21 ] << endl;
    
    
return   0 ;
}

你可能感兴趣的:(UVa 11137 Ingenuous Cubrency)