模考3 笨笨連線遊戲

2021-07-22 13:25:34 字數 1170 閱讀 7741

一天,媽媽在黑板上畫了乙個大大的圓,然後又在圓弧上標上1,2

,3,...,,2n

個數。然後讓笨笨任意選取一對數(

兩個不同的數

)上連一條直線。然後再任意選取一對數,再邊一條直線,但這條直線不能和任何別的直線相交。每個數都要恰好與另乙個數連一條直線。

笨笨費了好大的勁才找出一種連線方案。媽媽在旁邊問笨笨:給出n

,請問不同的連線方案有多少種呢?

笨笨算不出來,只好請教作為大牛的你。

多組資料,每組資料的格式為:

第1行:

1個整數n(

1<= n <= 150

),表示在圓弧上會標記

2n個數

當輸入的n為0

時,表示輸入結束。

【輸出】

每組輸入對應輸出一行,乙個整數,表示連線的方案數。由於結果太大,只保留模10007

後的餘數。

【樣例輸入】

2 3 

0【樣例輸出】

【分析】

考試時,看到這道題,我早已一臉懵逼。於是,也就一臉懵逼地用回朔法來做。但覺得實現難度太大,便放棄了。

實際上,這是一道典型的遞推題。

我們從一號點開始,與最後乙個點相連。那麼,整個圓便被分為兩部分:0個點和n-2個點。

根據乘法原理,這麼連,n個點的連線方案數就是0個點的方案數+(n-2)個點的方案數的乘積。

將這條線向下平移,就可以用同樣的方法,求這麼連的方案數。將它們相加,便是答案。

具體方法如下:

設f(n)為(2 * n)個點的方案數。

則遞推式為:

f(n) = f(0) + f(n - 2) + f(1) + f(n - 2) + ... + f(n - 2) + f(0)

邊界條件為:

f(1) = 1;     f(0) = 1(不連便是一種方案)

【程式】

#includeint f[155];

int main()

for(i = c + 1; i <= n; i++)

}printf("%d\n", f[n]);

c = n;

}}

2018程設模考2

a 分別記錄紙幣剩餘數量判斷是否能找零,因為資料比較弱所以對於5 5 5的情況沒考慮也過了。includeusing namespace std int main else else else if flag printf true return 0 b 因為一次只能搬一塊或者兩塊磚頭,所以對於n塊...

模考 2018 03 11 塞克斯斯

塞克斯斯是六兄弟中的老六,他喜歡老大福斯特,他希望福斯特 高興。所以他要幫福斯特寫作業。作業如下 給 n 個正方形,正方形有兩種 a 型 平行於座標軸,中心位於 x,y 邊長為偶數 a b 型 和座標軸成 45 度夾角,中心位於 x,y 對角線長為偶數 d。求這些正方形覆蓋的面積總大小。第一行乙個整...

gmat模考 GMAT備考如何進行模考練習

準備gmat考試的考生,大多會在備考中進行幾次模考練習。模考練習也的確給人回報高和真實度高的印象。老師喜歡模考,因為模考能幫助他們更好的了解學生的學習情況 學生參加模考,是因為模考能讓他們更清晰的認識到自己的優勢和不足。但如何正確使用模考材料,避免低效率浪費寶貴的學習資源和備考時間,讓每次模考都發揮...