藍橋杯 排列(例題)

2021-07-24 07:26:29 字數 1047 閱讀 2232

排列(permutation)

分析:1. 兩個重要條件:

①abc:def:ghi=1:2:3    ②1~9 9個自然數組成abc def ghi 三個三位數,且每個數字恰好使用一次。

2. 由題意,def是abc的兩倍,ghi是abc的三倍,結合1. 中條件,可知abc最小是123,最大是329(因為要滿足abc def ghi是三位數)

3. 因為1~9都要出現且僅出現一次,因此驗證每種解是否成立時,只需驗證分離出的9位數之和為45,且9位數之積為362880即可,這也就是第二種方法中不必太動腦筋體現的地方。

源**:

法一:暴力列舉法:

#include int main()  

if (c == 10 && i2 != 0 && i3 != 0 && j2 != 0 && j3 != 0 && k2 != 0 && k3 != 0) //count=1的情況下c=10,且三個三位數沒有含0的位,輸出這三個三位數

printf("%d %d %d\n", i, j, k);

}

return 0;

}

法二:利用迴圈,相對不必太費腦筋的做法

#include void result(int num,int &result_add,int &result_mul)

int main()

return 0;

}

法三:迴圈陣列綜合利用,更清晰直觀

#include int fun(int t,int i)                    //分解三位數,陣列相應位置值加一 

void cleararray(int t,int l) //將陣列置為0

{ int i;

for(i=0;i程式截圖:

藍橋杯 數字排列

今有7對數字 兩個1,兩個2,兩個3,兩個7,把它們排成一行。要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列 17126425374635 當然,如果把它倒過來,也是符合要求的。請你找出另一種符合要求的排列法,並且這個排列法是以7...

藍橋杯 逆序排列

問題描述 編寫乙個程式,讀入一組整數 不超過20個 並把它們儲存在乙個整型陣列中。當使用者輸入0時,表示輸入結束。然後程式將把這個陣列中的值按逆序重新存放,並列印出來。例如 假設使用者輸入了一組資料 7 19 5 6 2 0,那麼程式將會把前五個有效資料儲存在乙個陣列中,即7 19 5 6 2,然後...

藍橋杯 排列問題 全排列

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求乙個0 n 1的排列 即每個數只能出現一次 給出限制條件 一張n n的表,第i行第j列的1或0,表示為j 1這個數不能出現在i 1這個數後面,並保證第i行第i列為0 將這個排列看成乙個自然數,求從小到大排序第k個排列。資料規模和約...