PKU 2704
题目中一个重要条件,path只会是向右或者向下的
简单dp即可,算path种数
注意题目中已经说了是2^63,用int WA了一次
#include <stdio.h>
#include <string.h>
int map[35][35];
__int64 dp[35][35];
int n;
int main()
{
while(scanf("%d",&n) && n!=-1)
{
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%1d",&map[i][j]);
memset(dp,0,sizeof(dp));
dp[1][1] = 1;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
{
if (map[i][j]==0 || dp[i][j]==0) continue;
if (i+map[i][j]<=n)
dp[i+map[i][j]][j] += dp[i][j];
if (j+map[i][j]<=n)
dp[i][j+map[i][j]] += dp[i][j];
}
printf("%I64d/n",dp[n][n]);
}
}