1. 程式人生 > >2016年第七屆藍橋杯省賽A組試題

2016年第七屆藍橋杯省賽A組試題

2016年第七屆藍橋杯省賽(C/C++) A組試題及參考答案

第七屆藍橋杯省賽結束了,趁著還有點印象,趕緊把答案記一下。

歡迎加入à程式設計學習交流QQ群:23228338,一起交流藍橋杯答案及程式設計交流學習。群檔案有答案下載

1.父親和兒子(列舉)

父親的年齡兩個數字交換一下得到兒子的年齡,並且父親的年齡減去兒子的年齡為27,求有幾種情況(30 3也算一種)。

2.生日蠟燭(列舉)

一個人從某一歲開始每年生日都在蛋糕上插上與年齡數值相同的蠟燭,下載他總共插了236根蠟燭,問他從多少歲時開始插蠟燭?

直接從1歲開始列舉,找到答案就停止

3.填格子DFS

有一個含有10個格子的圖形,現用

0~9填充,連續的數不能填充在相鄰的格子中(包括對角線相鄰),問有多少種填充方法?

dfs即可,注意剪枝,就能秒出

4.快速排序

資料結構學過,這麼快又忘了,還看了半天...

swap(a,p,j);

程式碼填空,快速排序,這道題,如果知道快速排序的基本思想的話比較好想,當然題目描述裡面其實說的就是它的思想,只是比較抽象

我寫的是:

swap(a,p,j)

在機器上執行程式碼,確實實現了排序

5.去掉尾1

如果一個數二進位制表示時,若個位是1,則去掉從個位起開始的連續的1,若個位不是1,則不變

答案是:x&(x+1)

很簡單的答案,可是當時一點都沒想到,自己想的是用3元運算子,連續巢狀

31次實現這個功能,由於每次程式碼都一樣,所以用迴圈生成程式碼,最後交了700B...

6、後面的記不太清楚了,我記得有一道叫做寒假作業,是用11313個數字構成加減乘除四個算式,並且不能重複使用數字。

我用的是暴力破解,直接六重迴圈,模擬每一個位置的數字,只要驗證給出113中用掉了12個數字即認為符合要求,程式碼太長,不記得了,我求出來的應該是:64

7.剪郵票DFS

有一個3*4的十二生肖郵票,剪下連續的5個(對角相連不算),問有多少種方法?

dfs即可,只需要注意判重(當時先用map[已經排過序],結果不管一種剪法出現多少次都是顯示為出現,最後自己寫了個暴力判斷才行...