dp[i][j]
表示
到第i的位置为止
红色算筹比黑色算筹多j个时的方案数
然后递推
详细的过程在源程序的注释里都有
最后输出dp[n][0]
因为要求红黑算筹数目相等
(n已经预处理过了)
//P1722 矩阵 II
//2017.3.28
#include <iostream>
#include <cstdio>
using namespace std;
int n, dp[201][201];
int main(){
scanf("%d", &n);
n = n * 2; //是2n。。。
dp[1][1] = 1; //第1个位置只能放红
for (int i = 2; i <= n; i++) //已放到第i个
for (int j = 0; j <= i; j++){ //此时红比黑多j个
dp[i][j] = (dp[i - 1][j - 1] + dp[i][j]) % 100; //第i个放红色 则红与黑差值+1
dp[i][j] = (dp[i - 1][j + 1] + dp[i][j]) % 100; //第i个放红色 则红与黑差值-1
}
cout << dp[n][0] << endl;
return 0;
}