HDU1208 Pascal's Travels

来源:互联网 发布:非洲网络用户 编辑:程序博客网 时间:2024/06/05 04:47

题意:根据n*n的数据从左上角走到右下角,问有多少种走法。。。。。


dfs............

#include<cstdio>#include<stdlib.h>#include<string.h>#include<string>#include<map>#include<cmath>#include<iostream>#include <queue>#include <stack>#include<algorithm>#include<set>using namespace std;#define inf 2147483647#define eps 1e-8#define LL long long#define M 50005#define mol 1000000007int mat[50][50];__int64 ans[50][50];int n;int pd(int x,int y){   if(x>=0&&x<n&&y>=0&&y<n)   return 1;   return 0;}__int64 dfs(int x,int y){    if(!mat[x][y])return 0;if(ans[x][y])return ans[x][y];if(pd(x+mat[x][y],y))ans[x][y]+=dfs(x+mat[x][y],y);if(pd(x,y+mat[x][y]))ans[x][y]+=dfs(x,mat[x][y]+y);return ans[x][y];}int main(){   while(scanf("%d",&n)&&n!=-1)   {       int i,j;   char s[50];   getchar();   memset(mat,0,sizeof(mat));   memset(ans,0,sizeof(ans));   for(i=0;i<n;i++)   {       scanf("%s",s);   for(j=0;j<n;j++)   {      mat[i][j]=s[j]-'0';   }   }   mat[n-1][n-1]=1;   ans[n-1][n-1]=1;   printf("%I64d\n",dfs(0,0));   }return 0;}


0 0
原创粉丝点击