90分求助,第七个点

P1605 迷宫

```cpp #include<bits/stdc++.h> using namespace std; int dx[10]={0,0,0,1,-1}; int dy[10]={0,1,-1,0,0}; int n,m,t,fx,fy,sx,sy,q,u; int ans=0; int ma[20][20]; void DFS(int x,int y) { if(x==fx&&y==fy) { ans=ans+1; return; } int a,b; for(int i=1;i<=4;++i) { a=x;b=y; a=a+dx[i]; b=b+dy[i]; if(a>0&&a<=n&&b>0&&b<=m&&ma[a][b]!=1) { ma[a][b]=1; DFS(a,b); ma[a][b]=0; } } return; } int main() { scanf("%d %d",&n,&m); scanf("%d",&t); scanf("%d %d",&sx,&sy); scanf("%d %d",&fx,&fy); ma[sx][sy]=1; for(int i=1;i<=t;++i) { scanf("%d %d",&q,&u); ma[q][u]=1; } DFS(sx,sy); printf("%d",ans); return 0; }
by Max__HE @ 2019-04-25 13:19:08


#include <bits/stdc++.h> using namespace std; int n,m,t,a[7][7],vis[7][7]; int sx,sy,fx,fy,ans=0; inline void init_() { freopen("a.txt","r",stdin); } inline int read_() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x*f; } inline void clean_() { memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); } inline void readda_() { clean_(); n=read_();m=read_();t=read_(); sx=read_();sy=read_();fx=read_();fy=read_(); for(int i=1;i<=t;i++) { int x=read_(),y=read_(); a[x][y]=1; } } inline void dfs_(int x,int y) { if(x<1||y<1||x>n||y>m) return; if(a[x][y]) return; if(x==fx&&y==fy) { ans++; return; } if(!vis[x+1][y]) { vis[x+1][y]=1; dfs_(x+1,y); vis[x+1][y]=0; } if(!vis[x-1][y]) { vis[x-1][y]=1; dfs_(x-1,y); vis[x-1][y]=0; } if(!vis[x][y-1]) { vis[x][y-1]=1; dfs_(x,y-1); vis[x][y-1]=0; } if(!vis[x][y+1]) { vis[x][y+1]=1; dfs_(x,y+1); vis[x][y+1]=0; } return; } inline void work_() { vis[sx][sy]=1; dfs_(sx,sy); printf("%d",ans); } int main() { init_(); readda_(); work_(); return 0; }
by 小元勋 @ 2019-04-30 15:25:55


``` #include <bits/stdc++.h> using namespace std; int n,m,t,a[7][7],vis[7][7]; int sx,sy,fx,fy,ans=0; inline void init_() { freopen("a.txt","r",stdin); } inline int read_() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x*f; } inline void clean_() { memset(a,0,sizeof(a)); memset(vis,0,sizeof(vis)); } inline void readda_() { clean_(); n=read_();m=read_();t=read_(); sx=read_();sy=read_();fx=read_();fy=read_(); for(int i=1;i<=t;i++) { int x=read_(),y=read_(); a[x][y]=1; } } inline void dfs_(int x,int y) { if(x<1||y<1||x>n||y>m) return; if(a[x][y]) return; if(x==fx&&y==fy) { ans++; return; } if(!vis[x+1][y]) { vis[x+1][y]=1; dfs_(x+1,y); vis[x+1][y]=0; } if(!vis[x-1][y]) { vis[x-1][y]=1; dfs_(x-1,y); vis[x-1][y]=0; } if(!vis[x][y-1]) { vis[x][y-1]=1; dfs_(x,y-1); vis[x][y-1]=0; } if(!vis[x][y+1]) { vis[x][y+1]=1; dfs_(x,y+1); vis[x][y+1]=0; } return; } inline void work_() { vis[sx][sy]=1; dfs_(sx,sy); printf("%d",ans); } int main() { init_(); readda_(); work_(); return 0; } ```
by 小元勋 @ 2019-04-30 15:26:23


|