深信服的一道笔试题

题目大致意思是从原点(0,0)出发,到(18,18)
下面有指令,1,向右,后面是步数,-1,向左
2向上,-2,向下
步数0代表在这一行或一列走任意步(只能朝前面的方向走),至少为1步,不要出边界

#include
#include
using namespace std;

bool flag(int x,int y){
    if(x<0||y<0||x>18||y>18){
        return false;
    }
    return true;
}

int main(){
    int n;
    cin>>n;
    int a[n][2];
    for(int i=0;i<4;++i){
        for(int j=0;j<2;++j){
            cin>>a[i][j];
        }
    }
    int x=0,y=0;
    vector<int>index;
    for(int i=0;i<4;++i){
        int dir = a[i][0];
        int len = a[i][1];
        if(len==0){
            index.push_back(i);
            len++;
        }
        if(dir==1){
            x += len;
        }else if(dir==-1){
            x -= len;
        }else if(dir==2){
            y += len;
        }else if(dir==-2){
            y -=len;
        }
        if(!flag(x,y)){
            cout<<"No"<<endl;
            break;
        }else{
            continue;
        }

    }
    cout<<x<<'\t'<<y<<endl;
    for(auto n:index){
        cout<<n<<endl;
    }
    bool k1 = false;
    if(18-x==0&&18-y!=0){
        for(auto in:index){
            if(a[in][0]==2){
                k1 = true;
                cout<<"Yes"<<endl;
            }
        }
        if(!k1){
            cout<<"No"<<endl;
        }
    }else if(18-x!=0&&18-y==0){
        for(auto in:index){
            if(a[in][0]==1){
                k1 = true;
                cout<<"Yes"<<endl;
            }
        }
        if(!k1){
            cout<<"No"<<endl;
        }
    }else if(18-x!=0&&18-y!=0){
        vector<int>res;
        for(auto in:index){
            if(a[in][0]==1||a[in][0]==2){
                res.push_back(a[in][0]);
            }
        }
        int k=0;
        for(auto r:res){
            if(r==1){
                k++;
                break;
            }
        }
        for(auto r:res){
            if(r==2){
                k++;
                break;
            }
        }
        if(k==2){
            k1 = true;
            cout<<"Yes"<<endl;
        }
        if(!k1){
            cout<<"No"<<endl;
        }
    }else{
        cout<<"No"<<endl;
    }






    return 0;
}

你可能感兴趣的:(深信服的一道笔试题)