解题思路:
注意事项:
参考代码:
#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分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复