简单dp
dp[ i ][ j ]=dp[ i-1 ][ j ](放一个H得到dp[ i ][ j ])+dp[ i ][ j-1 ]( 放一个D得到dp[ i ][ j ]);
注意初始化 为dp[ i ][ 0 ]=1;!!!!!!!
View Code
1 #include2 #include 3 const int maxn = 24; 4 typedef __int64 int64; 5 int64 dp[ maxn ][ maxn ]; 6 7 void init(){ 8 for( int i=0;i<=20;i++ ) 9 dp[i][0]=1;10 dp[ 1 ][ 1 ]=1;11 for( int i=2;i<=20;i++ ){12 for( int j=1;j<=i;j++ ){13 if( i==j ){14 dp[i][j]=dp[i][j-1];15 }16 else{17 dp[i][j]=dp[i-1][j]+dp[i][j-1];18 }19 }20 }21 }22 int main(){23 init();24 int n,m;25 while( scanf("%d%d",&n,&m)==2 ){26 printf("%I64d\n",dp[n][m]);27 }28 return 0;29 }