蒟蒻求助
查看原帖
蒟蒻求助
855663
0x0001cxr楼主2023/1/16 20:49

67分 3个TLE(应该就是输出0的情况不会搞) 求改

#include<bits/stdc++.h>
using namespace std;

struct hulk
{
    int h;
    int z;
    char b;
};

int main()
{
    hulk f, c;
    int time = 0;
    char m[10][10];
    for(int i = 1;i <= 10;i++)
    {
        for(int j = 1;j <= 10;j++)
        {
            cin >> m[i][j];
        }
    }
    for(int i = 1;i <= 10;i++)
    {
        for(int j = 1;j <= 10;j++)
        {
            if(m[i][j] == 'F')
            {
                f.h = i;
                f.z = j;
                f.b = 'b';
            }
            if(m[i][j] == 'C')
            {
                c.h = i;
                c.z = j;
                c.b = 'b';
            }
        }
    }
    for(int i = 1;;i++)
    {
        time++;
        if((f.b == 'b'))
        {
            if(m[f.h - 1][f.z] == '*' || f.h - 1 == 0)
            {
                f.b = 'd';
            }
            else
            {
                f.h -= 1;
            }
        }
        else if((f.b == 'n'))
        {
            if(m[f.h + 1][f.z] == '*' || f.h + 1 == 11)
            {
                f.b = 'x';
            }
            else
            {
                f.h += 1;
            }
        }
        else if((f.b == 'x'))
        {
            if(m[f.h][f.z - 1] == '*' || f.z - 1 == 0)
            {
                f.b = 'b';
            }
            else
            {
                f.z -= 1;
            }
        }
        else if((f.b == 'd'))
        {
            if(m[f.h][f.z + 1] == '*' || f.z + 1 == 11)
            {
                f.b = 'n';
            }
            else
            {
                f.z += 1;           
            }
        }

        if((c.b == 'b'))
        {
            if(m[c.h - 1][c.z] == '*' || c.h - 1 == 0)
            {
                c.b = 'd';
            }
            else
            {
                c.h -= 1;
            }
        }
        else if((c.b == 'n'))
        {
            if(m[c.h + 1][c.z] == '*' || c.h + 1 == 11)
            {
                c.b = 'x';
            }
            else
            {
                c.h += 1;
            }
        }
        else if((c.b == 'x'))
        {
            if(m[c.h][c.z - 1] == '*' || c.z - 1 == 0)
            {
                c.b = 'b';
            }
            else
            {
                c.z -= 1;
            }
        }
        else if((c.b == 'd'))
        {
            if(m[c.h][c.z + 1] == '*' || c.z + 1 == 11)
            {
                c.b = 'n';
            }
            else
            {
                c.z += 1;           
            }
        }
        if(f.h == c.h && f.z == c.z)
        {
            cout << time << endl;
            break;
        }
    }
    return 0;
}
2023/1/16 20:49
加载中...