java-它总是说错误的答案
发布时间:2022-08-28 15:34:13 376
相关标签: # 移动端
据说:有一天,阿里巴巴遇到了一个他无法解决的难题。这个谜题由4个数字组成,他的任务是检查他是否能用算术运算符(+,−,×)在其他三个数字之间;这样每个操作符只使用一次。一□b□c=d
仅输入一行,其中包含四个数字a、b、c和d(−109≤a、 b、c≤109),(−1018≤d≤1018).
“输出打印”;“是”;(不带引号)如果使用算术运算符获得第四个数字,否则,请打印;否“;(无引号)。
示例
输入
3 4 5 23
输出
对
输入
9 5 3 7
输出
对
输入
1 2 3 1
输出
不
这就是我的解决方案
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
if (aliBabaAndPuzzles(sc.nextDouble(), sc.nextDouble(), sc.nextDouble(), sc.nextDouble()))
System.out.println("YES");
else
System.out.println("NO");
}
private static boolean aliBabaAndPuzzles(double a, double b, double c, double d) {
char[] operations = {'+', '-', '*'};
for (int i = 0; i < operations.length - 1; i++) {
for (int j = i + 1; j < operations.length; j++) {
if (calc(a, operations[i], b, operations[j], c) == d) {
return true;
}
if (calc(a, operations[j], b, operations[i], c) == d) {
return true;
}
}
}
return false;
}
private static double calc(double num1, char op1, double num2, char op2, double num3) {
if (op2 == '/' || op2 == '*') return calc(num1, calc(num2, num3, op2), op1);
return calc(calc(num1, num2, op1), num3, op2);
}
private static double calc(double num1, double num2, char op) {
if (op == '+') return num1 + num2;
else if (op == '-') return num1 - num2;
else if (op == '*') return num1 * num2;
else if (op == '/') return num1 / num2;
else if (op == '%') return num1 % num2;
else return 0;
}
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报