第五届蓝桥杯省赛JavaB组第七题扑克序列

标题:扑克序列
    A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。
    要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。

    请填写出所有符合要求的排列中,字典序最小的那个。

例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。

请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。

思路:暴力搜索,根据每个数都必须在数组内和数组内必须使得A 2 3 4都为2个两个判定依据进行判定。找出相应的结果。

程序输出结果:2342A3A4    4A3A2432

正确答案:2342A3A4

public class Main {
	public static void main(String[] args) {
		int a = 0, b = 0, c = 0, d = 0;//计数的,记录A,2,3,4在数组中的个数
		char[] s = new char[8];
		for (int i = 7; i >= 0; i--) {//A
			for (int j = 7; j >= 0; j--) {//2
				for (int k = 7; k >= 0; k--) {//3
					for (int l = 7; l >= 0; l--) {//4
						if (l - 5 >= 0 && k - 4 >= 0 && j - 3 >= 0 && i - 2 >= 0 && i != j && i != k && i != l && j != k
								&& j != l && k != l && (i - 2) != (j - 3) && (i - 2) != (k - 4) && (i - 1) != (l - 5)
								&& (j - 3) != (k - 4) && (j - 3) != (l - 5) && (k - 4) != (l - 5)) {//判断条件:即,每个数字就在数组里面,并且每个数字在数组中的位置都不相等
							s[i] = s[i - 2] = 'A';//对应上面的A
							s[j] = s[j - 3] = '2';//对应上面的2
							s[k] = s[k - 4] = '3';//对应上面的3
							s[l] = s[l - 5] = '4';//对应上面的4
							for (int z = 0; z < 8; z++) {//每次都判定,查看数组中A,2,3,4的个数是否等于2,都等于2输出相应的结果,记住。。如果不是一定要重新给计数的abcd赋值为0.
								if (s[z] == 'A') {
									a++;
								} else if (s[z] == '2') {
									b++;
								} else if (s[z] == '3') {
									c++;
								} else if (s[z] == '4') {
									d++;
								}
							}
							if (a == 2 && b == 2 && c == 2 && d == 2) {
								System.out.print(s);
								System.out.println();

							} else {
								a = 0;
								b = 0;
								c = 0;
								d = 0;
							}
						}
					}
				}
			}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值