一直33分,不知道什么智障问题犯了,只能说自己习惯不好
#include<iostream>
using namespace std;
char mp[15][15];
int vis[15][15][15][15];
int cowx,cowy,fjx,fjy,cowpos,fjpos;
int main()
{
for(int i=0;i<=11;i++)
{
mp[0][i] = '*';
mp[11][i] = '*';
mp[i][0] = '*';
mp[i][11] = '*';
}
for(int i=1;i<=10;i++)
for(int j=1;j<=10;j++)
{
cin >> mp[i][j];
if(mp[i][j] == 'C')
{
cowx = i,cowy = j;
}
if(mp[i][j] == 'F')
{
fjx = i,fjy = j;
}
}
vis[cowx][cowy][fjx][fjy] = 1;
cowpos = 1;
fjpos = 1;
int t = 0;
while(cowx != fjx || cowy != fjy)
{
t++;
//cow移动
if(cowpos == 1)
{
if(mp[cowx-1][cowy] != '*') cowx--;
else cowpos++;
}
if(cowpos == 2)
{
if(mp[cowx][cowy+1] != '*') cowy++;
else cowpos++;
}
if(cowpos == 3)
{
if(mp[cowx+1][cowy] != '*') cowx++;
else cowpos++;
}
if(cowpos == 4)
{
if(mp[cowx][cowy-1] != '*') cowy--;
else cowpos = 1;
}
//cow移动
if(fjpos == 1)
{
if(mp[fjx-1][fjy] != '*') fjx--;
else fjpos++;
}
if(fjpos == 2)
{
if(mp[fjx][fjy+1] != '*') fjy++;
else fjpos++;
}
if(fjpos == 3)
{
if(mp[fjx+1][fjy] != '*') fjx++;
else fjpos++;
}
if(fjpos == 4)
{
if(mp[fjx][fjy-1] != '*') fjy--;
else fjpos = 1;
}
vis[cowx][cowy][fjx][fjy]++;
if(vis[cowx][cowy][fjx][fjy] > 4)
{
cout << "0";
return 0;
}
}
cout << t;
return 0;
}