每日一題 第四屆藍橋杯b組 帶分數(dfs)

2021-10-21 19:55:07 字數 841 閱讀 3852

思路:

1.暴力求出9個數的全排列,用num[i]陣列儲存每個數字。

2.對全排列劃分為三部分,依次進行判斷。

難點:劃分為三個數,因為a,b,c三個數必須存在c最小可能為1,b也可能是個位數,那麼a最多就是7位數。

第一層迴圈是a的位數的擷取,第二層是b的位數的擷取,b要緊接著a,所以j = i + 1開始,b至少給c留一位,故終點為8.

所以對a從1到7迴圈擷取,b必須大於c,b從a的後面一位擷取,i+1到j。c從j + 1到終點9.

#include

using

namespace std;

typedef

long

long ll;

bool vis[10]

;int num[10]

;int n;

int cnt;

ll calc

(int x,

int y)

return res;

}void

dfs(

int n)

}return;}

//求全排列,對應9個數每次選數都有9種選擇

for(

int i=

1;i<=

9;i++)}

intmain()

帶分數(藍橋杯第四屆)

7 3 帶分數 qdulq 16 分 100 可以表示為帶分數的形式 100 3 69258 714 還可以表示為 100 82 3546 197 注意特徵 帶分數中,數字1 9分別出現且只出現一次 不包含0 類似這樣的帶分數,100 有 11 種表示法。從標準輸入讀入乙個正整數n n 1000 1...

第四屆藍橋杯程式設計題 帶分數

分析 這道題初看起來第一感覺就是用暴力破解應該可以搞定,但是時間複雜度應該會相當可觀,仔細觀察,會發現這道題無非是全排列的一種運用,把等式定義為 n a b c 則abc組合在一起就是1到9的乙個全排列,所以可以把問題轉換成對於乙個9位數的數字,如何將其劃分為a b c三部分,使得其滿足n a b ...

帶分數 第四屆藍橋杯省賽C B C組

1.先列舉全排列 2.列舉位數 3.判斷是否滿足要求 這道題也就是n a b c,求出符合要求的abc的方案數。進行優化時,可以對等式進行改寫,改寫成 b cn ca。include include include includeusing namespace std const int n 30 ...