제출 #1027450

#제출 시각아이디문제언어결과실행 시간메모리
1027450LIFRobot Contest (IOI23_robot)C++17
16 / 100
110 ms5776 KiB
#include "robot.h"
#include<bits/stdc++.h>
using namespace std;
enum state
{
    Extent, //如果存在0時向四周擴展
    Back, //如果不存在0時,代表應返回
    End, //-2 -2 
};
class robot
{
public:
    state robot_state;
    vector<int> S;
    robot(){return;}
    robot(vector<int> _S)//init;
    {
        S = _S;
        if(S[2] == -2 && S[3] == -2)
        {
            robot_state = state::End;
            return;
        }
        for(int it = 2;it<4;it++)
        {
            if(S[it] == 0)
            {
                robot_state = state::Extent;
                return;
            }
        }
        robot_state = state::Back;
    }
};
class instruction
{
public:
    robot now_robot;
    int Z;
    char A;
    char find_direction(int num)
    {
        if(num == 1)return 'W';
        if(num == 2)return 'S';
        if(num == 3)return 'E';
        if(num == 4)return 'N';
        return '0';
    }
    instruction(robot _now)
    {
        now_robot = _now;
        if(now_robot.robot_state  == state::End)
        {
            Z = 1;
            A = 'T';
        }
        if(now_robot.robot_state == state::Extent)
        {
            for(int i=2;i<4;i++)
            {
                if(now_robot.S[i] == 0)
                {
                    Z = 1;
                    A = find_direction(i);
                }
            }
        }
        if(now_robot.robot_state == state::Back)
        {
            for(int i=1;i<5;i++)
            {
                if(now_robot.S[i] == 1)
                {
                    Z = 2;
                    A = find_direction(i);
                }
            }
        }
        return;
    } 
    void work() //除構造函數外,應寫成 void function() / int function()的形式
    {
        set_instruction(now_robot.S,Z,A);
        return;
    }
};
void program_pulibot()
{
    vector<int> v;
    for(int i=-2;i<=2;i++)v.push_back(i);
    for(auto it : v)//可以縮進取代多個大括號
        for(auto it2 : v)
            for(auto it3 : v)
                for(auto it4 : v)
                    for(auto it5 : v)
                    {
                        vector<int> temp;
                        temp = {it,it2,it3,it4,it5};
                        robot now_robot(temp);
                        instruction now_instruction(now_robot);
                        now_instruction.work();                     
                    }
    //注 s[0]原地,s[1] 西方,s[2]南方,s[3]東方,s[4]北方
 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...