https://blog.csdn.net/SillyGOAT/article/details/120951886
详细见我上方的博客!
这样ac了:
#include<stdio.h>
struct location{
int row;
int column;
int direction;
}farmer,cow;
int main()
{
char a[12][12];
int i,j;
for(i=0;i<10;i++)
{
gets(a[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(a[i][j]=='F')
{
farmer.row=i;
farmer.column=j;
farmer.direction=1;
a[i][j]='.';
}
if(a[i][j]=='C')
{
cow.row=i;
cow.column=j;
cow.direction=1;
a[i][j]='.';
}
}
}
int cnt=0;
while(1)
{
if(farmer.direction%4==1)
{
if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]=='.')
{
farmer.row--;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==2)
{
if(farmer.column+1!=10&&a[farmer.row][farmer.column+1]=='.')
{
farmer.column++;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==3)
{
if(farmer.row-1!=10&&a[farmer.row+1][farmer.column]=='.')
{
farmer.row++;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==0)
{
if(farmer.column-1!=-1&&a[farmer.row][farmer.column-1]=='.')
{
farmer.column--;
}else
{
farmer.direction++;
}
}
if(cow.direction%4==1)
{
if(cow.row-1!=-1&&a[cow.row-1][cow.column]=='.')
{
cow.row--;
}else
{
cow.direction++;
}
}else if(cow.direction%4==2)
{
if(cow.column+1!=10&&a[cow.row][cow.column+1]=='.')
{
cow.column++;
}else
{
cow.direction++;
}
}else if(cow.direction%4==3)
{
if(cow.row+1!=10&&a[cow.row+1][cow.column]=='.')
{
cow.row++;
}else
{
cow.direction++;
}
}else if(cow.direction%4==0)
{
if(cow.column-1!=-1&&a[cow.row][cow.column-1]=='.')
{
cow.column--;
}else
{
cow.direction++;
}
}
if(farmer.row==cow.row&&farmer.column==cow.column)
{
cnt++;
break;
}else
{
cnt++;
}
if(cnt>100000)
{
printf("0");
return 0;
}
}
printf("%d",cnt);
return 0;
}
然而这样:
#include<stdio.h>
struct location{
int row;
int column;
int direction;
}farmer,cow;
int main()
{
char a[12][13];
int i,j;
for(i=0;i<10;i++)
{
gets(a[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(a[i][j]=='F')
{
farmer.row=i;
farmer.column=j;
farmer.direction=1;
}
if(a[i][j]=='C')
{
cow.row=i;
cow.column=j;
cow.direction=1;
}
}
}
int cnt=0;
while(1)
{
if(farmer.direction%4==1)
{
if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]!='*')
{
farmer.row--;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==2)
{
if(farmer.column+1!=10&&a[farmer.row][farmer.column+1]!='*')
{
farmer.column++;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==3)
{
if(farmer.row-1!=10&&a[farmer.row+1][farmer.column]!='*')
{
farmer.row++;
}else
{
farmer.direction++;
}
}else if(farmer.direction%4==0)
{
if(farmer.column-1!=-1&&a[farmer.row][farmer.column-1]!='*')
{
farmer.column--;
}else
{
farmer.direction++;
}
}
if(cow.direction%4==1)
{
if(cow.row-1!=-1&&a[cow.row-1][cow.column]!='*')
{
cow.row--;
}else
{
cow.direction++;
}
}else if(cow.direction%4==2)
{
if(cow.column+1!=10&&a[cow.row][cow.column+1]!='*')
{
cow.column++;
}else
{
cow.direction++;
}
}else if(cow.direction%4==3)
{
if(cow.row+1!=10&&a[cow.row+1][cow.column]!='*')
{
cow.row++;
}else
{
cow.direction++;
}
}else if(cow.direction%4==0)
{
if(cow.column-1!=-1&&a[cow.row][cow.column-1]!='*')
{
cow.column--;
}else
{
cow.direction++;
}
}
if(farmer.row==cow.row&&farmer.column==cow.column)
{
cnt++;
break;
}else
{
cnt++;
}
if(cnt>100000)
{
printf("0");
return 0;
}
}
printf("%d",cnt);
return 0;
}
就是会卡在第四个测试点:
区别只有判断是否可走的条件上:(判断 . 的话自然要将初始位置改为 . )
if(cow.column-1!=-1&&a[cow.row][cow.column-1]!='*')
{
cow.column--;
}else
{
cow.direction++;
}
if(farmer.row-1!=-1&&a[farmer.row-1][farmer.column]=='.')
{
farmer.row--;
}else
{
farmer.direction++;
}