回家参考代码

#include
using namespace std;
int main(){
    int x, y, z, s;
    cin >> x >> y >> z >> s;
    int ans = 0;
    if(x <= y){ // 人在房子左边有3种情况
        // 1:
        if(z <= x){
            if(s == 0){
                ans = (x - z) * 2 + (y - z) * 3;
            }else if(s == 1){
                ans = (x - z) * 3 + (y - z) * 2;
            }else{ // s = -1
                ans = (x - z) + (y - z) * 4;
            }
        }else if(z <= y){ // 钥匙在人房子中间
            if(s == 0){
                ans = (z - x) * 2 + (y - z) * 3;
            }else if(s == 1){
                ans = (z - x) + (y - z) * 2;
            }else{ // s = -1
                ans = (z - x) * 3 + (y - z) * 4;
            }
        }else{ // z > y
            if(s == 0){
                ans = (z - x) * 2 + (z - y) * 3;
            }else if(s == 1){
                ans = (z - x) + (z - y) * 4;
            }else{ // s == -1
                ans = (z - x) * 3 + (z - y) * 2;
            }
        }
    }else{ // x > y 人在房子右边有3种情况
        // 4:
        if(z >= x){
            if(s == 0){
                ans = (z - x) * 2 + (z - y) * 3;
            }else if(s == 1){
                ans = (z - x) + (z - y) * 4;
            }else{
                ans = (z - x) * 3 + (z - y) * 2;
            }
        }
        else if(z >= y){
            if(s == 0){
                ans = (x - z) * 2 + (z - y) * 3;
            }else if(s == 1){
                ans = (x - z) * 3 + (z - y) * 4;
            }else{
                ans = (x - z)  + (z - y) * 2;
            }
        }else{
            if(s == 0){
                ans = (x - z) * 2 + (y - z) * 3;
            }else if(s == 1){
                ans = (x - z) * 3 + (y - z) * 2;
            }else{
                ans = (x - z) + (y - z) * 4;
            }
        }
    }
    cout << ans << endl;
    return 0;
}

你可能感兴趣的:(算法,c++,开发语言)