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 ****************************************************************/
- 1
信息
- ID
- 1799
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者