zoukankan      html  css  js  c++  java
  • [USACO5.2] Snail Trails

    搜索就能水过。

    洛谷 P1560 传送门

    搜索传参的时候,除了要传坐标和已走的步数,还要传方向。

    走过了就标记,回溯的时候清标记(都是常规操作了)。

    边界也要被视为障碍,刚开始把这个忘了,结果听取WA声一片......

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 int n,b,ans;
     7 int m[125][125];
     8 int dx[]={0,0,1,0,-1};
     9 int dy[]={0,1,0,-1,0};
    10 
    11 void dfs(int x,int y,int dir,int step)
    12 {
    13     if(step>ans)ans=step;
    14     if(!m[x+dx[dir]][y+dy[dir]])
    15     {
    16         m[x][y]=-1;
    17         dfs(x+dx[dir],y+dy[dir],dir,step+1);
    18         m[x][y]=0;
    19     }else if(m[x+dx[dir]][y+dy[dir]]==1)
    20     {
    21         for(int i=1;i<=4;i++)
    22         {
    23             if((!m[x+dx[i]][y+dy[i]])&&((i+dir)%2))
    24             {
    25                 m[x][y]=-1;
    26                 dfs(x+dx[i],y+dy[i],i,step+1);
    27                 m[x][y]=0;
    28             }
    29         }
    30     }
    31 }
    32 
    33 int main()
    34 {
    35     scanf("%d%d",&n,&b);
    36     for(int i=1;i<=b;i++)
    37     {
    38         char s[10];
    39         scanf("%s",s+1);
    40         int px=s[1]-'A'+1;
    41         int py=0,pp=2;
    42         while(s[pp]>='0'&&s[pp]<='9')
    43             py=py*10+s[pp++]-'0';
    44         m[px][py]=1;
    45     }
    46     for(int i=1;i<=n;i++)
    47         m[0][i]=m[i][0]=m[n+1][i]=m[i][n+1]=1;
    48     dfs(1,1,1,1);
    49     dfs(1,1,2,1);
    50     printf("%d",ans);
    51     return 0;
    52 }
  • 相关阅读:
    定义函数
    变量与常量
    字符串与格式化
    字符串与编码
    字符编码
    元组-tuple
    列表-list
    分支和循环
    润乾配置连接kingbase(金仓)数据库
    润乾报表在proxool应用下的数据源配置
  • 原文地址:https://www.cnblogs.com/eternhope/p/9760256.html
Copyright © 2011-2022 走看看