1 条题解
-
0
C :
#include <stdlib.h> #include <stdio.h> char a[9][9]; int n,m,t,dx,dy,f; int g[4][2]= {{1,0},{0,1},{-1,0},{0,-1}}; void dfs(int x,int y,int p) { int i,sx,sy,s; s=p-abs(x-dx)-abs(y-dy); if(x>n||y>m||x<=0||y<=0) return; if(p==0&&s==0) f=1; if(f) return; if(s<0||s&1) return; for(i=0; i<4; i++) { sx=x+g[i][0]; sy=y+g[i][1]; if(a[sx][sy]!='X') { a[sx][sy]='X'; dfs(sx,sy,p-1); a[sx][sy]='.'; } } return; } int main() { int i,j,x,y,b; while(scanf("%d%d%d",&n,&m,&t)&&(n!=0||m!=0||t!=0)) { getchar(); b=0; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { scanf("%c",&a[i][j]); if(a[i][j]=='S') { x=i; y=j; } else if(a[i][j]=='D') { dx=i; dy=j; } else if(a[i][j]=='X') b++; } getchar(); } if(n*m-b<=t) { printf("NO\n"); continue; } f=0; a[x][y]='X'; dfs(x,y,t); if(f) printf("YES\n"); else printf("NO\n"); } return 0; } /************************************************************** Problem: 1056 User: admin Language: C Result: 正确 Time:2 ms Memory:1064 kb ****************************************************************/
C++ :
#include <stdio.h> int n,m,t,ok; char a[11][11]; void dd(int t,int x,int y) { if((t==0)&&(a[x][y]=='D')) ok=1; if(t==0) return; if(ok==1) return; if((a[x-1][y]=='.')||((a[x-1][y]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x-1,y); a[x][y]='.'; } if((a[x+1][y]=='.')||((a[x+1][y]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x+1,y); a[x][y]='.'; } if((a[x][y-1]=='.')||((a[x][y-1]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x,y-1); a[x][y]='.'; } if((a[x][y+1]=='.')||((a[x][y+1]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x,y+1); a[x][y]='.'; } } int run() { int i,j,x,y; char s[10]; for(i=0;i<=n+1;i++) for(j=0;j<=m+1;j++) a[i][j]='X'; for(i=1;i<=n;i++) { scanf("%s",s); for(j=1;j<=m;j++) { a[i][j]=s[j-1]; if(a[i][j]=='S') { x=i; y=j; } } } ok=0; dd(t,x,y); if(ok==1) printf("YES\n"); else printf("NO\n"); } int main() { scanf("%d%d%d",&n,&m,&t); while(n!=0) { run(); scanf("%d%d%d",&n,&m,&t); } return 0; }
Python :
def space_input(p=''): s=raw_input(p).split() for i in range(len(s)): s[i]=eval(s[i]) return tuple(s) class Mymap: def __init__(self,h,w): self.sx=self.sy=0 self.height=h self.width=w self.allmoves=set() self.maze=[[' ' for i in range(w)] for i in range(h)] def getmap(self): for i in range(self.height): line=raw_input() for j in range(self.width): self.maze[i][j]=line[j] if line[j]=='S': self.sx,self.sy=i,j def move(self,maze,sx,sy,moves=0): if maze[sx][sy]=='D': self.allmoves.add(moves) else: new=eval(repr(maze)) new[sx][sy]='X' for i,j in [(sx-1,sy),(sx+1,sy),(sx,sy-1),(sx,sy+1)]: if 0<=i<self.height and 0<=j<self.width and new[i][j]!='X': self.move(new,i,j,moves+1) h,w,t=space_input() while h or w or t: a=Mymap(h,w) a.getmap() a.move(a.maze,a.sx,a.sy) if t in a.allmoves: print 'YES' else: print 'NO' h,w,t=space_input()
- 1
信息
- ID
- 647
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者