1 条题解

  • 0
    @ 2023-6-11 12:17:59

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
    	
    	int x1,y1,x2,y2,s1,s2;
    	cin>>x1>>y1>>x2>>y2;
    	int n = 18 * 4;//一圈总步数
    	
    	//如果是上下两条线
    	if(abs(x1 - x2) == 18){
    		//从左侧走
    		s1 = y1 - 1 + 18 + y2 - 1;  
    		s2 = n - s1; // 从右侧走
    	} else if(abs(y1 - y2) == 18){
    		//从下面走
    		s1 = x1 - 1 + 18 + x2 - 1;
    		s2 = n - s1; //从上面走
    		//在一条线上
    	} else if(x1 == x2){
    		s1 = abs(y1 - y2);//只能是这样解
    		s2 = n - s1;
    	}else if(y1 == y2){
    		s1 = abs(x1 - x2);
    		s2 = n - s1;
    	}else{ //在相邻的边
    		s1 = abs(x1 - x2)  + abs(y1 - y2);
    		s2 = n - s1;
    	}
    	
    	//输出更短的路径
    	if(s1 < s2){
    		cout<<s1;
    	}  else{
    		cout<<s2;
    	}
    	
    }
    
    
    • 1

    信息

    ID
    2453
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者