zoukankan      html  css  js  c++  java
  • POJ 2704

     1 #include <iostream>
     2 #include <string>
     3 #define LL long long
     4 #define MAXN 100
     5 using namespace std;
     6 
     7 int dis[2][2] = {1,0,0,1};
     8 
     9 int _m[MAXN][MAXN];
    10 LL dp[MAXN][MAXN];
    11 struct node
    12 {
    13     int x;
    14     int y;
    15 };
    16 int n;
    17 LL dfs(node _node);
    18 //bool mark[MAXN][MAXN];
    19 int main()
    20 {
    21     //freopen("acm.acm","r",stdin);
    22 
    23     int i;
    24     int j;
    25     string s;
    26     while(cin>>n)
    27     {
    28         getchar();
    29         if(n == -1)
    30         {
    31             break;
    32         }
    33         memset(dp,0,sizeof(dp));
    34         for(i = 0; i < n; ++ i)
    35         {
    36             getline(cin,s);
    37             for(j = 0; j < n; ++ j)
    38             {
    39                 //cin>>_m[i][j];
    40                 _m[i][j] = s[j]-'0';
    41             }
    42         }
    43     
    44         node b;
    45         b.x = 0;
    46         b.y = 0;
    47         cout<<dfs(b)<<endl;
    48     }
    49 }
    50 
    51 
    52 LL dfs(node _node)
    53 {
    54     if(_node.x == n-1 && _node.y == n-1)
    55     {
    56         return 1;
    57     }
    58     if(_m[_node.x][_node.y] == 0)
    59     {
    60         return 0;
    61     }
    62     node temp;
    63     temp.x = _node.x+_m[_node.x][_node.y];
    64     temp.y = _node.y;
    65     if(temp.x < n)
    66     {
    67         if(dp[temp.x][temp.y] == 0)
    68         {
    69             dp[_node.x][_node.y] += dfs(temp);
    70         }
    71         else
    72         {
    73             dp[_node.x][_node.y] += dp[temp.x][temp.y];
    74         }
    75     }    
    76     temp.x = _node.x;
    77     temp.y = _node.y+_m[_node.x][_node.y];
    78     if(temp.y < n)
    79     {
    80         if(dp[temp.x][temp.y] == 0)
    81         {
    82             dp[_node.x][_node.y] += dfs(temp);
    83         }
    84         else
    85         {
    86             dp[_node.x][_node.y] += dp[temp.x][temp.y];
    87         }
    88     }
    89 
    90     return dp[_node.x][_node.y];
    91 }
  • 相关阅读:
    C语言寒假大作战01
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4568645.html
Copyright © 2011-2022 走看看