程序如下:
#include<cstdio>
int n;
int dp[100][100];
int dfs(int inn,int outn)
{
if(inn < outn) return 0;
if(dp[inn][outn]) return dp[inn][outn];
if(inn < 1 or outn < 1) return 0;
dp[inn][outn] = dfs(inn,outn-1) + 1 + dfs(inn-1,outn);
}
int main()
{
scanf("%d",&n);
printf("%d\n",dfs(n,n));
for(int i = 1;i <= n;i++,printf("\n"))
for(int j = 1;j <= n;j++)
printf("%d ",dp[i][j]);
}
问题如下:
同样输入3,但是保留注释行的运行结果与运行注释行的结果不同
结果如下:
注释:
4276352
1 0 0
4276353 4276354 0
4276353 8552705 4276353
运行:
!!!!!!1
1 0 0
2 3 0
2 3 2