而dp[i][j]=dp[i-1][j]+dp[i][j-1]
因为是不穿越对角线,可以走对角线之上也可以走对角线之下,故最后答案要乘2,代码如下:
#include <iostream>
using namespace std;
long long dp[38][38];
int main()
{
ios::sync_with_stdio(false);
for(int i=0;i<38;i++)
dp[i][1]=dp[1][i]=1;
for(int i=2;i<38;i++)
{
dp[i][i]=dp[i-1][i];
for(int j=i+1;j<38;j++)
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
int t=0,n;
while(t++,cin>>n,~n)
cout<<t<<" "<<n<<" "<<2*dp[n+1][n+1]<<endl;
return 0;
}