一架飞机载着5位运动员从奥林匹克运动会归来,这5位运动员在某个项目中排名第一到第五。他们说了下面这些话:
A:”我不是最后一名。”
B:”C是第三名。”
C:”A的排名在E后面。”
D:”E是第二名。”
E:”D不是第一名。”
处于谦虚或其他什么原因,金牌和银牌的得主都说了谎。那三个成绩相对较差的运动员倒说了真话。 他们的排名到底怎样?
public class Test {
public static void main(String[] args) {
int[] person = new int[6];
for (person[1] = 1; person[1] < 6; person[1]++) {
for (person[2] = 1; person[2] < 6; person[2]++) {
for (person[3] = 1; person[3] < 6;person[3]++) {
for (person[4] = 1; person[4] <6; person[4]++) {
for (person[5] = 1; person[5] < 6; person[5]++) {
int sum = person[1] + person[2] + person[3] + person[4] + person[5];
int mul = person[1] * person[2] * person[3] * person[4] * person[5];
if (sum == 15 && mul == 120){
if (judge(person)){
System.out.printf("%d %d %d %d %d",person[1] , person[2] , person[3] , person[4] , person[5]);
System.out.println();
}
}
}
}
}
}
}
}
public static boolean judge(int[] person){
boolean [] isTrue = new boolean [6];
isTrue[1] = person[1] != 5;
isTrue[2] = person[3] == 3;
isTrue[3] = person[1] > person[5];
isTrue[4] = person[5] == 2;
isTrue[5] = person[4] != 1;
for (int i = 1; i < 6; i++) {
if (person [i] < 3){
isTrue[i] = !isTrue[i];
}
}
if (isTrue[1] && isTrue[2] && isTrue[3] && isTrue[4] && isTrue[5])
return true;
return false;
}
}
作为程序员,当然是暴力破天下了,想起来那时候参加蓝桥杯的SB时光了