[Comet OJ - Contest #7] 麻将题

news/2024/5/19 1:44:50 标签: 枚举

麻将题

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

	}

}

 


http://www.niftyadmin.cn/n/1437141.html

相关文章

C# Object类源码注释翻译

// Internal methodtable used to instantiate the "canonical" methodtable for generic instantiations. 内部方法列表用于实例化“规范化”的方法列表来具现化&#xff08;具体化&#xff09;泛型实例。 // The name "__Canon" will never been seen b…

C# foreach(迭代语句标识符)语句译文上

foreach语句语法&#xff1a; foreach_statement foreach语句 局部变量类型 标识符 in 表达式&#xff08;例如&#xff1a;数组对象&#xff09; : foreach ( local_variable_type identifier in expression ) embedded_statement 嵌入式语句 ; The type and ide…

[计算机算法设计与分析] 写在前面的话

以下章节的主要内容算法分析基本思想递归&#xff0c;动态规划&#xff0c;贪心算法&#xff0c;回溯法&#xff0c;分支界限法&#xff0c;随机算法&#xff0c;线性规划和网络流……算法设计解决典型NP问题图像压缩&#xff0c;电路布线&#xff0c;流水作业&#xff0c;背包…

C#选择排序交错数组

在C#中,我们应该怎么对C#中的交错数组进行排序呢&#xff1f; 话不多说&#xff0c;直接上代码&#xff1a;

[计算机算法设计与分析] 算法概述

学习要点&#xff1a; 理解算法的概念理解什么是程序&#xff0c;程序与算法的区别和内在联系掌握算法的计算复杂性概念掌握算法渐进复杂性的数学表述掌握用C语言描述算法的方法1.1 算法 算法是指解决问题的一种方法或一个过程。算法是若干指令的又穷序列&#xff0c;满足性质…

Java和C#在定义和初始化多维数组时的 不同

首先&#xff0c;C#和Java定义多维数组的语法是不同的&#xff1a; C#中定义多维数组的语法是&#xff1a;数组的数据类型[以逗号分隔不同的维度] 数组的标识符&#xff0c;例如&#xff1a;int[,] a Java中创建多维数组的语法是&#xff1a;数组的数据类型[][]...... 以[]分…

[洛谷]P1618三连击

题目描述 将1&#xff0c;2&#xff0c;…&#xff0c;9共9个数分成三组&#xff0c;分别组成三个三位数&#xff0c;且使这三个三位数的比例是A:B:C&#xff0c;试求出所有满足条件的三个三位数&#xff0c;若无解&#xff0c;输出“No!!!”。 //感谢黄小U饮品完善题意 输入…

Windows10文件命名规则之特殊字符

首先&#xff0c;我们可以清楚地看到在Windows10系统中 文件名不能包含下列任何字符&#xff1a; \ / : * ? ”(英文右引号) < > | 那么是否除此之外就可以随意命名文件了呢&#xff1f; 其实并不是&#xff1a;