麻将题
已经提交 已经通过 时间限制: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);
}
}
}