Java穷举法例子

一、甲 、乙、丙 三位球迷分别预测进入半决赛的四队A、B、C、D的名次如下:
甲:A 第一名 、B 第二名
乙:C 第一名 、D 第三名
丙:D第一名 、 A 第三名
设比赛结果,四队互不相同,并且甲乙丙的预测各对一半,求A、B、C、D队的名次?
/*
* 采用穷举法令变量a,b,c,d分别为四个名次:
* 方法一:前者正确,则后者错误,既(a==1)&&(b!=2)||(a!=1)&&(b==2)
* 方法二:两者不允许同时成立,既是条件a==1和b==2不允许相等。(a==1)!=(b==2)
*/

public class ContinueDemo {

    public static void main(String[] args) {

        int a, b, c, d;
        boolean t;
        //分别循环所有的可能性
        for (a = 1; a <= 4; a++) {

            for (b = 1; b <= 4; b++) {
                //如果两个名次相同,跳出本次循环。
                if(a==b){
                    continue;
                }
                for (c = 1; c <= 4; c++) {
                    //如果两个名次相同,跳出本次循环。
                    if(c == b||c == a){
                        continue;
                    }
                    //四队的名次之和为10;
                    d = 10-a-b-c;
                    t = ((a==1)&&(b!=2)||(a!=1)&&(b==2))&&((c==1)&&(d!=3)||(c!=1)&&(d==3))&&((d==2)&&(a!=3)||(d!=2)&&(a==3));
//                  t = ((a==1)!=(b==2))&&((c==1)!=(d==3)&&((d==2)!=(a==3)));
                    if(t){
                        System.out.println("A="+a);
                        System.out.println("B="+b);
                        System.out.println("C="+c);
                        System.out.println("D="+d);
                    }
                }

            }

        }
    }
}

你可能感兴趣的:(java)