社区讨论
30求调,回复必关注
P1518[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m1csk9rw
- 此快照首次捕获于
- 2024/09/22 07:39 去年
- 此快照最后确认于
- 2025/11/04 19:58 4 个月前
以下是代码,思路见注释,想知道为什么只有30
(而且我第一个检测点下载的数据本地测试能过,也WA了)
CPP#include<stdio.h>
char map[12][12];
int time=0;
int cx,cy;
int fx,fy;
int main()
{
//边界设置为障碍
for(int i=0;i<12;i++)
{
map[0][i]='*';
map[11][i]='*';
}
for(int i=0;i<12;i++)
{
map[i][0]='*';
map[i][11]='*';
}
//读取地图,同时读取并清空CF的位置
for(int i=1;i<11;i++)
{
for(int j=1;j<11;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='C')
{
cx=i;
cy=j;
map[i][j]='.';
}
if(map[i][j]=='F')
{
fx=i;
fy=j;
map[i][j]='.';
}
}
getchar();
}
//flag表示方向
int flagf=1;
int flagc=1;
for(;;)
{
if(cx==fx&&cy==fy)
{
printf("%d",time);
return 0;
}
if(time>100000)//投机取巧QWQ
{
printf("0");
return 0;
}
//牛移动
if(flagc%4==2)
{
if(map[cx][cy+1]=='*')
{
flagc++;
}
else if(map[cx][cy+1]=='.')
{
cy++;
}
}
else if(flagc%4==3)
{
if(map[cx+1][cy]=='*')
{
flagc++;
}
else if(map[cx+1][cy]=='.')
{
cx++;
}
}
else if(flagc%4==0)
{
if(map[cx][cy-1]=='*')
{
flagc++;
}
else if(map[cx][cy-1]=='.')
{
cy--;
}
}
else if(flagc%4==1)
{
if(map[cx-1][cy]=='*')
{
flagc++;
}
else if(map[cx-1][cy]=='.')
{
cx--;
}
}
//人移动
if(flagf%4==2)
{
if(map[fx][fy+1]=='*')
{
flagf++;
}
else if(map[fx][fy+1]=='.')
{
fy++;
}
}
else if(flagf%4==3)
{
if(map[fx+1][fy]=='*')
{
flagf++;
}
else if(map[fx+1][fy]=='.')
{
fx++;
}
}
else if(flagf%4==0)
{
if(map[fx][fy-1]=='*')
{
flagf++;
}
else if(map[fx][fy-1]=='.')
{
fy--;
}
}
else if(flagf%4==1)
{
if(map[fx-1][fy]=='*')
{
flagf++;
}
else if(map[fx-1][fy]=='.')
{
fx--;
}
}
time++;
}
}
感谢你看到这里!求解惑
回复
共 5 条回复,欢迎继续交流。
正在加载回复...