[Comet OJ - Contest #7] 麻将题

麻将题

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

88.12%

提交人数:463

通过人数:408

 

题目描述

 

T1.pngT2.png

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


 

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

 


 

简洁题意:可以理解为有一个长度为 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);
		}

	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值