usaco Snail Trails
生活随笔
收集整理的這篇文章主要介紹了
usaco Snail Trails
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
N沒(méi)有給數(shù)據(jù)范圍是這題最惡心的地方,因?yàn)檫@個(gè)wa了有點(diǎn)惡心。
/* ID: modengd1 PROG: snail LANG: C++ */ #include <iostream> #include <stdio.h> #include <memory.h> using namespace std; char Map[200][200]; bool vis[200][200]; int N,M; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; int ans; void DFS(int x,int y,int dir,int step) {ans=max(ans,step);if(x+dx[dir]<0||x+dx[dir]>=N||y+dy[dir]<0||y+dy[dir]>=N||Map[x+dx[dir]][y+dy[dir]]=='#'){int d=(dir+1)%4;if(!(x+dx[d]<0||x+dx[d]>=N||y+dy[d]<0||y+dy[d]>=N||Map[x+dx[d]][y+dy[d]]=='#'||vis[x+dx[d]][y+dy[d]])){vis[x+dx[d]][y+dy[d]]=true;DFS(x+dx[d],y+dy[d],d,step+1);vis[x+dx[d]][y+dy[d]]=false;}d=(4+dir-1)%4;if(!(x+dx[d]<0||x+dx[d]>=N||y+dy[d]<0||y+dy[d]>=N||Map[x+dx[d]][y+dy[d]]=='#'||vis[x+dx[d]][y+dy[d]])){vis[x+dx[d]][y+dy[d]]=true;DFS(x+dx[d],y+dy[d],d,step+1);vis[x+dx[d]][y+dy[d]]=false;}}else if(!vis[x+dx[dir]][y+dy[dir]]){vis[x+dx[dir]][y+dy[dir]]=true;DFS(x+dx[dir],y+dy[dir],dir,step+1);vis[x+dx[dir]][y+dy[dir]]=false;} } int main() {freopen("snail.in","r",stdin);freopen("snail.out","w",stdout);char y;int x;memset(vis,false,sizeof(vis));scanf("%d%d",&N,&M);getchar();for(int i=0;i<M;i++){scanf("%c%d",&y,&x);Map[x-1][y-'A']='#';getchar();}ans=0;DFS(0,0,0,1);memset(vis,false,sizeof(vis));DFS(0,0,1,1);cout<<ans<<endl;return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/modengdubai/p/4856603.html
總結(jié)
以上是生活随笔為你收集整理的usaco Snail Trails的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基金单位净值小于1说明什么 这样的基金能
- 下一篇: 滴滴回应高额抽成 司机收入占乘客应付总