这个问题就是加了限制的典型的dp问题,限制了dp的区域是右下角的三角形(其实可以替换成左边的三角形区域,答案不变),就化成了常规的dp问题
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=35;
LL dp[N][N];int main()
{int n;while(scanf("%d",&n)!=EOF){dp[0][0]=1;for(int i=1;i<=n;++i) //三角形区域的dp问题{for(int j=0;j<=i;++j){if(j==0)dp[i][j]=dp[i-1][j];else if(i==j)dp[i][j]=dp[i][j-1];elsedp[i][j]=dp[i-1][j]+dp[i][j-1];}}printf("%lld\n",dp[n][n]);}return 0;
}