解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int n,m,ans;
int sx,sy;
char s[50][50];
int b[50][50];
void dfs(int x,int y,int sum)
{
int i,j,tx,ty,k;
int hang[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
if(x==sx&&y==sy)
{
if(sum<=ans)
ans=sum;
return;
}
for(i=0;i<4;i++)
{
tx=x+hang[i][0];
ty=y+hang[i][1];
if(tx<0||ty<0||tx>=n||ty>=m)
continue;
else
;
if(b[tx][ty]!=0)
continue;
else
;
if(s[tx][ty]=='X')
continue;
else
;
if(s[tx][ty]=='T')
k=sum+2;
else
k=sum+1;
b[tx][ty]=1;
dfs(tx,ty,k);
b[tx][ty]=0;
}
}
int main()
{
int i,j,k;
while(scanf("%d %d",&n,&m)!=EOF)
{
getchar();
for(i=0;i<50;i++)
for(j=0;j<50;j++)
b[i][j]=0;
for(i=0;i<n;i++)
scanf("%s",s[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(s[i][j]=='A')
{
sx=i;sy=j;
break;
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(s[i][j]=='C')
goto lee;
lee: b[i][j]=1;
ans=99999;
dfs(i,j,0);
if(ans!=99999)
printf("%d\n",ans);
else
printf("Game Over!\n");
}
return 0;
}
0.0分
3 人评分
C二级辅导-等差数列 (C语言代码)浏览:761 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:563 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:481 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:605 |
C语言训练-自由落体问题 (C语言代码)浏览:1732 |
简单的a+b (C语言代码)浏览:667 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1416 |
淘淘的名单 (C语言代码)答案错误???浏览:593 |
【出圈】 (C语言代码)浏览:794 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1419 |