• hdu 1208 记忆化搜索


    题目大意:只能按照格子上的数字*方向走,从左上走到右下
    Sample Input
    4
    2331
    1213
    1231
    3110
    Sample Output
    3

    直接记忆化搜索,注意是0的情况

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 #define cl(a) memset(a,0,sizeof(a))
    13 #define ts printf("*****
    ");
    14 const int MAXN=1005;
    15 int n,m,tt;
    16 long long dp[40][40];
    17 char s[40][40];
    18 int a[40][40];
    19 int d[2][2]={1,0,0,1};
    20 long long dfs(int x,int y)
    21 {
    22     if(dp[x][y]||!a[x][y])    return dp[x][y];
    23     for(int i=0;i<2;i++)
    24     {
    25         int nx=x+d[i][0]*a[x][y];
    26         int ny=y+d[i][1]*a[x][y];
    27         if(nx>=0&&nx<n&&ny>=0&&ny<n)
    28         {
    29             dp[x][y]+=dfs(nx,ny);
    30         }
    31     }
    32     return dp[x][y];
    33 }
    34 int main()
    35 {
    36     int i,j,k;
    37     #ifndef ONLINE_JUDGE
    38     freopen("1.in","r",stdin);
    39     #endif
    40     while(scanf("%d",&n)!=EOF&&n>0)
    41     {
    42         for(i=0;i<n;i++)
    43         {
    44             scanf("%s",s[i]);
    45             for(j=0;j<n;j++)
    46             {
    47                 a[i][j]=s[i][j]-'0';
    48             }
    49         }
    50         memset(dp,0,sizeof(dp));
    51         dp[n-1][n-1]=1;
    52         printf("%I64d
    ",dfs(0,0));
    53     }
    54 }
  • 相关阅读:
    [NOI2004] 郁闷的出纳员
    对象内部套嵌多个对象
    函数
    匿名函数、对象
    函数部分
    Html部分
    搜索二叉树的应用
    二叉树的线索化
    搜索结构搜索二叉树
    堆与最优级队列
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4455566.html
Copyright © 2020-2023  润新知