隨意組合問題

題目

小明被綁架到X星球的巫師W那里。

其時(shí),W正在玩弄兩組數(shù)據(jù)(2 3 5 8)(1 4 6 7)
他命令小明從一組數(shù)據(jù)中分別取數(shù)與另一組中的數(shù)配對(duì),共配成4對(duì)(組中的每個(gè)數(shù)必被用到)。
小明的配法是:{(8,7),(5,6),(3,4),(2,1)}

巫師凝視片刻,突然說這個(gè)配法太棒了!

因?yàn)椋?br> 每個(gè)配對(duì)中的數(shù)字組成兩位數(shù),求平方和,無論正倒,居然相等:

87^2 + 56^2 + 34^2 + 21^2  =  12302
78^2 + 65^2 + 43^2 + 12^2  =  12302

小明想了想說:“這有什么奇怪呢,我們地球人都知道,隨便配配也可以??!”
{(8,6),(5,4),(3,1),(2,7)}

86^2 + 54^2 + 31^2 + 27^2 = 12002
68^2 + 45^2 + 13^2 + 72^2 = 12002

巫師頓時(shí)凌亂了。。。。。

請(qǐng)你計(jì)算一下,包括上邊給出的兩種配法,巫師的兩組數(shù)據(jù)一共有多少種配對(duì)方案具有該特征。
配對(duì)方案計(jì)數(shù)時(shí),不考慮配對(duì)的出現(xiàn)次序。
就是說:
{(8,7),(5,6),(3,4),(2,1)}

{(5,6),(8,7),(3,4),(2,1)}
是同一種方案。

注意:需要提交的是一個(gè)整數(shù),不要填寫任何多余內(nèi)容(比如,解釋說明文字等)

思路分析

先取得全部不重復(fù)組合,再計(jì)算正和倒的平方和,如果相等,計(jì)數(shù)變量自增。

取得全部不重復(fù)組合

自己想了好久,發(fā)現(xiàn)各種代碼實(shí)現(xiàn)不如枚舉來得簡單……反正只有24個(gè)……

圖一

圖一易知當(dāng)?shù)谝唤M為(2,1)時(shí),共有6種情況,而第一組共有4種可能,所以總共有6x4=24種可能。
所以可以定義一個(gè)三維維數(shù)組:

int all[24][4][2]={{{2,1},{3,4},{5,6},{8,7}},
                       {{2,1},{3,4},{5,7},{8,6}},
                       {{2,1},{3,6},{5,4},{8,7}},
                       {{2,1},{3,6},{5,7},{8,4}},
                       {{2,1},{3,7},{5,4},{8,6}},
                       {{2,1},{3,7},{5,6},{8,4}},
                       {{2,4},{3,1},{5,6},{8,7}},
                       {{2,4},{3,1},{5,7},{8,6}},
                       {{2,4},{3,6},{5,1},{8,7}},
                       {{2,4},{3,6},{5,7},{8,1}},
                       {{2,4},{3,7},{5,1},{8,6}},
                       {{2,4},{3,7},{5,6},{8,1}},
                       {{2,6},{3,1},{5,4},{8,7}},
                       {{2,6},{3,1},{5,7},{8,4}},
                       {{2,6},{3,4},{5,1},{8,7}},
                       {{2,6},{3,4},{5,7},{8,1}},
                       {{2,6},{3,7},{5,1},{8,4}},
                       {{2,6},{3,7},{5,4},{8,1}},
                       {{2,7},{3,1},{5,4},{8,6}},
                       {{2,7},{3,1},{5,6},{8,4}},
                       {{2,7},{3,4},{5,1},{8,6}},
                       {{2,7},{3,4},{5,6},{8,1}},
                       {{2,7},{3,6},{5,1},{8,4}},
                       {{2,7},{3,6},{5,4},{8,1}}};

另外,我只是一個(gè)C語言初學(xué)者,如果您有一個(gè)合適的取全部不重復(fù)組合的算法,請(qǐng)務(wù)必聯(lián)系我,謝謝!

(下面是我想算法時(shí)的一些內(nèi)容,因?yàn)椴恢雷约褐笫欠衲芟氲礁玫乃惴?,所以沒有刪掉,而是選擇用刪除線勾掉,請(qǐng)您跳過閱讀)
自上而下思考:
2與其他一組的四個(gè)數(shù)字有四種組合方式,分別為(2,1) (2,4) (2,6) (2,7)
當(dāng)?shù)谝唤M確定下來是(2,1)后,3與另一組的三個(gè)數(shù)字有三種組合方式,分別為(3,4) (3,6) (3,7)
當(dāng)?shù)诙M確定下來是(3,4)后,5與另一組的兩個(gè)數(shù)字有兩種組合方式,分別為(5,6) (5,7)
當(dāng)?shù)谌M確定下來是(5,6)后,8與另一組的剩下的一個(gè)數(shù)字就只有一種組合方式,是(8,7)
而當(dāng)?shù)谌M確定下來是(5,7)后,8與另一組的剩下的一個(gè)數(shù)字就只有一種組合方式,是(8,6)

定義結(jié)構(gòu)體儲(chǔ)存數(shù)據(jù)如下:
struct data{
int first[2];
int second[2];
int third[2];
int fourth[2];
};

~~一個(gè)結(jié)構(gòu)體存儲(chǔ)一組數(shù)據(jù),如組合方式:(2,1) (3,4) (5,6) (8,7)用結(jié)構(gòu)體數(shù)組即為:
~~
xxx.first[0]=2;
xxx.first[1]=1;
xxx.second[0]=3;
xxx.second[1]=4;
xxx.third[0]=5;
xxx.third[1]=6;
xxx.fourth[0]=8;
xxx.fourth[1]=7;

取得全部不重復(fù)組合算法
由圖一易知當(dāng)?shù)谝唤M為(2,1)時(shí),共有6種情況,而第一組共有4種可能,所以總共有6x4=24種可能。所以定義全部可能為一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組長度為24:

struct data all[24];

計(jì)算正和倒的平方和
int cnt=0;
    for(int i=0;i<24;i++){
        int sum1=0,sum2=0;
        for(int j=0;j<4;j++){
            sum1+=pow(all[i][j][0]*10+all[i][j][1],2);
        }
        for(int j=0;j<4;j++){
            sum2+=pow(all[i][j][1]*10+all[i][j][0],2);
        }
        if(sum1==sum2){
            cnt++;
        }
    }

完整代碼

#include <stdio.h>
#include <math.h>

int main(){
    int all[24][4][2]={{{2,1},{3,4},{5,6},{8,7}},
                       {{2,1},{3,4},{5,7},{8,6}},
                       {{2,1},{3,6},{5,4},{8,7}},
                       {{2,1},{3,6},{5,7},{8,4}},
                       {{2,1},{3,7},{5,4},{8,6}},
                       {{2,1},{3,7},{5,6},{8,4}},
                       {{2,4},{3,1},{5,6},{8,7}},
                       {{2,4},{3,1},{5,7},{8,6}},
                       {{2,4},{3,6},{5,1},{8,7}},
                       {{2,4},{3,6},{5,7},{8,1}},
                       {{2,4},{3,7},{5,1},{8,6}},
                       {{2,4},{3,7},{5,6},{8,1}},
                       {{2,6},{3,1},{5,4},{8,7}},
                       {{2,6},{3,1},{5,7},{8,4}},
                       {{2,6},{3,4},{5,1},{8,7}},
                       {{2,6},{3,4},{5,7},{8,1}},
                       {{2,6},{3,7},{5,1},{8,4}},
                       {{2,6},{3,7},{5,4},{8,1}},
                       {{2,7},{3,1},{5,4},{8,6}},
                       {{2,7},{3,1},{5,6},{8,4}},
                       {{2,7},{3,4},{5,1},{8,6}},
                       {{2,7},{3,4},{5,6},{8,1}},
                       {{2,7},{3,6},{5,1},{8,4}},
                       {{2,7},{3,6},{5,4},{8,1}}};

    int cnt=0;
    for(int i=0;i<24;i++){
        int sum1=0,sum2=0;
        for(int j=0;j<4;j++){
            sum1+=pow(all[i][j][0]*10+all[i][j][1],2);
        }
        for(int j=0;j<4;j++){
            sum2+=pow(all[i][j][1]*10+all[i][j][0],2);
        }
        if(sum1==sum2){
            cnt++;
        }
    }

    printf("%d",cnt);

    return 0;
}

結(jié)果

24
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:選D,7+9=16;9+(-1)=8;(...
    Alex_bingo閱讀 19,782評(píng)論 1 19
  • 曾經(jīng)有一份美好的愛情放在我的面前我沒有珍惜。等到失去后才后悔莫及。如果可以再對(duì)小李說。毛欣想說。這輩子無緣再牽手。...
    毛欣與小李閱讀 3,308評(píng)論 0 13
  • @font-face{ font-family:"Times New Roman"; } @font-face{ ...
    niki閱讀 570評(píng)論 0 1
  • 一 英鳳回到屋,看著凌亂的炕,心里一陣陣發(fā)疼。呂林家的變故和呂林、狗蛋的失蹤令英鳳心中疑惑。英鳳聽村里人說從這里走...
    覺夢(mèng)2016閱讀 320評(píng)論 0 0
  • 曾經(jīng),我最大的愿望是能夠當(dāng)一個(gè)自由職業(yè)者,每天做自己喜歡的事情,可是慢慢發(fā)現(xiàn)這樣的生活并沒有我想象中的那種來自心靈...
    咸魚人生閱讀 352評(píng)論 0 0

友情鏈接更多精彩內(nèi)容