• [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 }
  • 相关阅读:
    聊聊click延迟和点击穿透
    setAttribute的浏览器兼容性(转)
    浅谈JS中的高级函数
    跨域总结
    本地存储小结
    ubuntu下pip的安装和使用
    并发编程艺术-锁类型以及底层原理
    HTTP协议以及HTTP2.0/1.1/1.0区别
    Paxos
    jvm垃圾收集器总结jdk1.7
  • 原文地址:https://www.cnblogs.com/cervusy/p/9760256.html
Copyright © 2020-2023  润新知