第十届蓝桥杯 JavaA 最大降雨量

在这里插入图片描述
题解见:

题解1
题解2
错误代码:

import java.util.Arrays;

/**
 * 1.暴力,超时。 2.数学方法 http://www.pianshen.com/article/7298303105/
 * https://blog.csdn.net/u013377068/article/details/88776898
 * 有15天比结果大,所以为49-15=34
 * 
 * @description TODO
 * @author frontier
 * @time 2019年4月8日 下午9:51:55
 *
 */
public class C最大降雨量3 {
	static int[] a = new int[60];
	static boolean[] vis = new boolean[60];
	static int[] mid = new int[10];
	static double max = Integer.MIN_VALUE;
	static boolean flag;

	public static void main(String[] args){
		dfs(0);
	}

	static void dfs(int n) {
		if (n == 49) {
			Arrays.sort(a, 43, 50);
			mid[7] = a[46];
			if (mid[7] < mid[6])
				return;
			Arrays.sort(mid, 1, 8);
			System.out.println(mid[4]);

			if (mid[4] > max)
				max = mid[4];
			flag = true;
			return;
		}
		if (n == 7) {
			Arrays.sort(a, 1, 8);
			mid[1] = a[4];
		}
		if (n == 14) {
			Arrays.sort(a, 8, 15);
			mid[2] = a[11];
			if (mid[2] < mid[1])
				return;
		}
		if (n == 21) {
			Arrays.sort(a, 15, 22);
			mid[3] = a[18];
			if (mid[3] < mid[2])
				return;
		}
		if (n == 28) {
			Arrays.sort(a, 22, 29);
			mid[4] = a[25];
			if (mid[4] < mid[3])
				return;
		}
		if (n == 35) {
			Arrays.sort(a, 29, 36);
			mid[5] = a[32];
			if (mid[5] < mid[4])
				return;
		}
		if (n == 42) {
			Arrays.sort(a, 36, 43);
			mid[6] = a[39];
			if (mid[6] < mid[5])
				return;
		}

		for (int i = a[n] + 1; i <= 49; ++i) {
			if (!vis[i]) {
				vis[i] = true;
				a[n + 1] = i;
				dfs(n + 1);
				vis[i] = false;
			}
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值