求大佬帮助,感觉思路没问题,但是案例都过不去> <
查看原帖
求大佬帮助,感觉思路没问题,但是案例都过不去> <
1449927
cccckick楼主2024/11/4 20:45
#include <bits/stdc++.h>
using namespace std;
int x;
int y;
int x2;
int y2;
int main()
{
    char a[11][11];
    for(int i=1; i<=10; i++)
        for(int j=1; j<=10; j++)
        {
            char x;
            cin>>x;
            a[i][j]=x;
        }
//
    for(int i=1; i<=10; i++)
        for(int j=1; j<=10; j++)
        {
            if(a[i][j]=='F')
            {
                x=i;
                y=j;
            }
            else if(a[i][j]=='C')
            {

                x2=i;
                y2=j;
            }
        }
//find初始坐标
    int n=0;
    int flag=1;
    int flag1=1;
    while(n<10000)// 循环次数开大
    {
//人
        if(flag==1&&a[x+1][y]!='*'&&x+1<=10)//如果移动的下一个位置不能是障碍物或者是边界
            x++;
        else if(flag==2&&a[x][y+1]!='*'&&y+1<=10)
            y++;
        else if(flag==3&&a[x-1][y]!='*'&&x-1>=1)
            x--;
        else if(flag==4&&a[x][y-1]!='*'&&y-1>=1)
            y--;
        else
            flag = (flag % 4) + 1;

        //牛
        if (flag1 == 1 && a[x2 + 1][y2] != '*' && x2 + 1 <= 10)
            x2++;
        else if (flag1 == 2 && a[x2][y2 + 1] != '*' && y2 + 1 <= 10)
            y2++;
        else if (flag1 == 3 && a[x2 - 1][y2] != '*' && x2 - 1 >= 1)
            x2--;
        else if (flag1 == 4 && a[x2][y2 - 1] != '*' && y2 - 1 >= 1)
            y2--;
        else
            flag1 = (flag1 % 4) + 1;
        n++;
        if(x==x2&&y==y2)
            break;
    }
    cout<<n;



}
2024/11/4 20:45
加载中...