17藍橋杯競賽題“紙牌三角形”

紙牌三角形

題目.png

此題實在是沒什么好的想法,只好強行暴力遍歷了。。希望有大佬能提供更加簡潔的思路

我的想法是。。將三個頂點按從大到小順序排列遍歷次序,在頂點順序固定的情況下就不可能存在鏡像和反轉(zhuǎn)了。然后再將除頂點外的點依次不重復地遍歷。。

JAVA17_2.java



class CardDelta{
    int top=1;
    int left=3;
    int right=2;
    
    
    /*
      A
     9 6
    4   8
   3 7 5 2
     * */
    public CardDelta() {
    }
    public void sort3Num() {
        for(int i = 1; i < 8; i++) {
            for(int j = i+1; j < 9; j++) {
                for(int k = j+1; k < 10; k++) {
                    //System.out.println(""+i+j+k);
                    //在此循環(huán)中確定三個定點的值,然后將其傳入一個函數(shù)中
                    //在函數(shù)中遍歷所有節(jié)點情況
                    runOver(i, j, k);
                }
            }
        }
    }

    public void runOver(int top, int left, int right) {
        int l1, l2, r1, r2, t1, t2;
        int tag=0;
        for(l1 = 1; l1 < 10; l1++) {
            if(l1!=top && l1!=left && l1!=right) {
                for(l2=1; l2<10; l2++) {
                    if (l2==l1 || (l2==top || l2==left || l2==right)) {
                        continue;
                    }
                    for(r1=1; r1 < 10; r1++) {
                        if (r1==l1 || r1==l2 || (r1==top || r1==left || r1==right)) {
                            continue;
                        }
                        for(r2=1; r2 < 10; r2++) {
                            if (r2==r1 || r2==l1 || r2==l2 || (r2==top || r2==left || r2==right)) {
                                continue;
                            }
                            for(t1=1; t1 < 10; t1++) {
                                if (t1==r1 || t1==l1 || t1==l2 || (t1==top || t1==left || t1==right)) {
                                    continue;
                                }
                                for(t2=1; t2 < 10; t2++) {
                                    if (t2==r1 || t2==l1 || t2==l2 || (t2==top || t2==left || t2==right)) {
                                        continue;
                                    }
                                    if(left+l1+l2+top == top+r1+r2+right && top+r1+r2+right == left+t1+t2+right) {
                                        tag++;
                                        System.out.println("left:"+left+l1+l2+top+"\nright:"+top+r1+r2+right+"\ndown:"+left+t1+t2+right);
                                    }
                                }
                            }
                        }
                    }
                    
                }
            }
        }
        System.out.println(tag);
    }
}

public class JAVA17_2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CardDelta cDelta = new CardDelta();
        cDelta.sort3Num();
    }

}

運行結(jié)果

運行結(jié)果.png

目測似乎沒有問題,并不知道正確答案,有錯誤的話歡迎指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容