题目:
一架飞机载着5位运动员从奥林匹克运动会归来,这5位运动员在某个项目中排名第一到第五。他们说了下面这些话:
A:”我不是最后一名。”
B:”C是第三名。”
C:”A的排名在E后面。”
D:”E是第二名。”
E:”D不是第一名。”
处于谦虚或其他什么原因,金牌和银牌的得主都说了谎。那三个成绩相对较差的运动员倒说了真话。 他们的排名到底怎样?
解决:
Java程序的解决思路
//用了lambda表达式,需要jdk8+
import static java.lang.System.out;
public class Temp{
interface Test{
abstract boolean check(int ans[]);
}
static void checkFun(int i, boolean t[], int ans[], Test[] condition){
int j;
if(i==ans.length){
for(j=0;j<condition.length;j++){
if(condition[j].check(ans) == false){
break;
}
}
if(j==condition.length){
out.println("\n(Correct )ans:");
for(int k=1;k<ans.length;k++)
out.print(""+k+":"+ans[k]+"; "