题目描述
给定一个正整数数组 检查数组中是否存在满足规则的数组组合 规则:A=B+2C
输入描述
第一行输入数组的元素个数 接下来一行输入所有数组元素 用空格隔开
输出描述
如果存在满足要求的数 在同一行里依次输出 规则里 A/B/C的取值 用空格隔开 如果不存在输出0
示例一
输入:
4
2 7 3 0
输出:
7 3 2
说明:
7=3+2*2
示例二
输入:
3
1 1 1
输出:
0
说明:
找不到满足条件的组合
备注:数组长度在3 ~ 100之间 数组成员为 0~65535 数组成员可以重复
但每个成员只能在结果算式中使用一次
如:
数组成员为 [0,0,1,5] 0出现两次允许,但结果0=0+2*0不允许
因为算式中使用了3个0 用例保证每组数字里最多只有一组符合要求的解
题解
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组的元素个数:");
scanner.nextLine();
System.out.println("请输入所有数组元素:");
String input = scanner.nextLine().replaceAll(" ","");
String result = checkCombination(input);
System.out.println(result);
}
/**
* 检查是否存在满足条件的数字组合
* @param input
* @return
*/
private static String checkCombination(String input){
StringBuilder sb = new StringBuilder();
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
int A = chars[i] - '0';
for (int j = 0; j < chars.length; j++) {
int B = chars[j] - '0';
for (int k = 0; k < chars.length; k++) {
int C = chars[k] - '0';
if (i!=j&&j!=k&& (A==(B+2*C))){
sb.append(A).append(" ").append(B).append(" ").append(C);
return sb.toString();
}
}
}
}
return "0";
}