[Comet OJ - Contest #7] 麻将题

麻将题

已经提交 已经通过 时间限制:1000ms 内存限制:256MB

88.12%

提交人数:463

通过人数:408

 

题目描述

 

不懂麻将者可直接看简洁题意。


 

面麻的时候经常大家已经坐好了,然后抽了每个人对应的自风(也就是坐的位置),每次可以交换相邻的两个人,问让这四个人逆时针顺序依次为  东 南 西 北  最少需要交换几次。

 


 

简洁题意:可以理解为有一个长度为 44 的环,上面的元素构成一个长度为 44 的排列,每次可以交换环上相邻两个位置,问至少交换多少次,使得这个环中值为 11 的位置逆时针方向的下一个位置是值为 22 的位置,再下一个位置是值为 33 的位置,再下一个位置是值为 44 的位置(也可能不用交换就满足条件,此时答案就是 00)。

(简洁题意中,可想像成数字 1,2,3,41,2,3,4 是对应到东南西北)

输入描述

 

一行四个数,代表逆时针顺序给出环上的元素,保证是一个 1 \sim 41∼4 的排列。

输出描述

 

输出一行一个数表示最小交换次数。

样例输入 1 

3 1 2 4

样例输出 1

1

提示

样例解释:交换第一个数和第四个数之后顺序就是 4,1,2,34,1,2,3 了,满足题目要求顺序(11 的逆时钟方向下个数是 22,再下个数是 33,再下个数是 44)。

 


这个题用到的方法是枚举;一共四个数,也就16种排列;注意是相邻两个人之间交换位置;


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int[] ch=new int[4];
		for(int i=0;i<4;i++) {
			ch[i]=sc.nextInt();
		}
		if((ch[0]==1&&ch[1]==2&&ch[2]==3&&ch[3]==4)||(ch[0]==2&&ch[1]==3&&ch[2]==4&&ch[3]==1)||(ch[0]==3&&ch[1]==4&&ch[2]==1&&ch[3]==2)||(ch[0]==4&&ch[1]==1&&ch[2]==2&&ch[3]==3)){
			System.out.println(0);
		}else if((ch[0]==1&&ch[1]==4&&ch[2]==3&&ch[3]==2)||(ch[0]==4&&ch[1]==3&&ch[2]==2&&ch[3]==1)||(ch[0]==3&&ch[1]==2&&ch[2]==1&&ch[3]==4)||(ch[0]==2&&ch[1]==1&&ch[2]==4&&ch[3]==3)) {
			System.out.println(2);
		}else {
			System.out.println(1);
		}

	}

}

 

你可能感兴趣的:(Comet,OJ,枚举)