赞
踩
通过万岁!!!
java代码
import java.util.Scanner; /** * @创建人 xcs * @创建日期 2022/4/3 * @创建时间 15:01 * 题目链接:http://lx.lanqiao.cn/problem.page?gpid=T2979 */ public class ALGO995 { static int max = 0; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.nextLine()); for (int i = 0; i < n; i++) { max = 0; int[] nums = new int[4]; nums[0] = Integer.parseInt(scanner.nextLine()); nums[1] = Integer.parseInt(scanner.nextLine()); nums[2] = Integer.parseInt(scanner.nextLine()); nums[3] = Integer.parseInt(scanner.nextLine()); // 初始化全false boolean[] vis = new boolean[4]; for (int j = 0; j < 4; j++) { vis[j] = true; getAns(vis, nums, 1, nums[j]); vis[j] = false; } System.out.println(max); } } private static void getAns(boolean[] vis, int[] nums, int flag, int ans) { if (max == 24) { return; } if (4 == flag) { max = ans > max && ans <= 24 ? ans : max; } if (2 == flag) { // 选了两个了,然后选择剩下两个(a+b)*(c+d)的情况 int c = 0, d = 0; for (int i = 0; i < 4; i++) { if (!vis[i] && flag == 2) { // 没有被选 c = nums[i]; flag--; } else if (!vis[i] && flag == 1) { d = nums[i]; } } // 还原 flag = 2; // 下面注销的都是不影响的 //ans = ans + (c + d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans - (c + d); //ans = ans - (c + d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans + (c + d); ans = ans * (c + d); max = ans > max && ans <= 24 ? ans : max; ans = ans / (c + d); if (ans % (c + d) == 0) { ans = ans / (c + d); max = ans > max && ans <= 24 ? ans : max; ans = ans * (c + d); } //ans = ans + (c - d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans - (c - d); //ans = ans - (c - d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans + (c - d); if (c != d) { ans = ans * (c - d); max = ans > max && ans <= 24 ? ans : max; ans = ans / (c - d); if (ans % (c - d) == 0) { ans = ans / (c - d); max = ans > max && ans <= 24 ? ans : max; ans = ans * (c - d); } } ans = ans + (c * d); max = ans > max && ans <= 24 ? ans : max; ans = ans - (c * d); ans = ans - (c * d); max = ans > max && ans <= 24 ? ans : max; ans = ans + (c * d); //ans = ans * (c * d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans / (c * d); if (ans % (c * d) == 0) { ans = ans / (c * d); max = ans > max && ans <= 24 ? ans : max; ans = ans * (c * d); } if (c % d == 0) { ans = ans + (c / d); max = ans > max && ans <= 24 ? ans : max; ans = ans - (c / d); ans = ans - (c / d); max = ans > max && ans <= 24 ? ans : max; ans = ans + (c / d); //ans = ans * (c / d); //max = ans > max && ans <= 24 ? ans : max; //ans = ans / (c / d); if (ans % (c / d) == 0) { ans = ans / (c / d); max = ans > max && ans <= 24 ? ans : max; ans = ans * (c / d); } } } for (int i = 0; i < 4; i++) { if (vis[i]) { // 选了 continue; } // 选第i个 vis[i] = true; // 之前的跟现在这个进行加减乘除 // 加 ans += nums[i]; getAns(vis, nums, flag + 1, ans); ans -= nums[i]; // 减 ans -= nums[i]; getAns(vis, nums, flag + 1, ans); ans += nums[i]; // 乘 ans *= nums[i]; getAns(vis, nums, flag + 1, ans); ans /= nums[i]; // 除 if (ans % nums[i] == 0) { ans /= nums[i]; getAns(vis, nums, flag + 1, ans); ans *= nums[i]; } vis[i] = false; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。