棋盤覆蓋問題代碼java 棋盤覆蓋問題算法分析

求8x8棋盤完美覆蓋的算法?

如果用1*2覆蓋的話

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括山南網(wǎng)站建設(shè)、山南網(wǎng)站制作、山南網(wǎng)頁制作以及山南網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,山南網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到山南省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

任意一塊骨牌在棋盤上的擺放都可以用一串長度為64的0、1序列來表示,比如

11000000000000000000000000000000000……0——表示在棋盤最左上角的位置橫著擺上一塊骨牌。

考慮到骨牌既可以橫著擺也可以豎著擺,一塊骨牌在棋盤上的擺放共有2*7*8=112種情況.

這樣就可以得到一個(gè)112*60大小的矩陣,不妨將該矩陣記為A。矩陣中的元素由0和1組成,矩陣中的每一行都有且只有兩個(gè)1。

于是上述問題,就轉(zhuǎn)換成怎樣從矩陣中找出32行,抽取出來的這32行構(gòu)成的新的32*60的矩陣,如果能滿足每列中有且只有一個(gè)1,那么它就是一個(gè)完美覆蓋。

矩陣的算法如下:

如果矩陣A為空且已經(jīng)選出了32行,則找到一個(gè)完美覆蓋,成功返回;

否則選取一個(gè)列c,如果c列中不存在1的話,不成功返回;

選擇C列中每一個(gè)滿足A[r,c]=1的行r;

將r值作為解決方案的一個(gè)步驟記錄下來;

對于r行中每一個(gè)A[r,j]=1的j值,從矩陣A中將第j列刪除;

對于j列中每一個(gè)A[i,j]=1的i值,從矩陣A中將第i行刪除;

將已經(jīng)縮小的矩陣重復(fù)進(jìn)行上面的運(yùn)算。

ACM入門學(xué)什么

初學(xué)者建議購買,《算法競賽入門經(jīng)典》 劉汝佳作,十分好,在深入可以是他的另外一本,黑書,《算法藝術(shù)與信息學(xué)競賽》。

計(jì)劃:

ACM的算法(覺得很好,有層次感)POJ上的一些水題(可用來練手和增加自信)

(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)

初期:

一.基本算法:

(1)枚舉. (poj1753,poj2965)

(2)貪心(poj1328,poj2109,poj2586)

(3)遞歸和分治法.

(4)遞推.

(5)構(gòu)造法.(poj3295)

(6)模擬法.(poj1068,poj2632,poj1573,poj2993,poj2996)

二.圖算法:

(1)圖的深度優(yōu)先遍歷和廣度優(yōu)先遍歷.

(2)最短路徑算法(dijkstra,bellman-ford,floyd,heap+dijkstra)

(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)

(3)最小生成樹算法(prim,kruskal)

(poj1789,poj2485,poj1258,poj3026)

(4)拓?fù)渑判?(poj1094)

(5)二分圖的最大匹配 (匈牙利算法) (poj3041,poj3020)

(6)最大流的增廣路算法(KM算法). (poj1459,poj3436)

三.數(shù)據(jù)結(jié)構(gòu).

(1)串 (poj1035,poj3080,poj1936)

(2)排序(快排、歸并排(與逆序數(shù)有關(guān))、堆排) (poj2388,poj2299)

(3)簡單并查集的應(yīng)用.

(4)哈希表和二分查找等高效查找法(數(shù)的Hash,串的Hash)

(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)

(5)哈夫曼樹(poj3253)

(6)堆

(7)trie樹(靜態(tài)建樹、動態(tài)建樹) (poj2513)

四.簡單搜索

(1)深度優(yōu)先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)

(2)廣度優(yōu)先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)

(3)簡單搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)

五.動態(tài)規(guī)劃

(1)背包問題. (poj1837,poj1276)

(2)型如下表的簡單DP(可參考lrj的書 page149):

1.E[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533)

2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最長公共子序列)

(poj3176,poj1080,poj1159)

3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最優(yōu)二分檢索樹問題)

六.數(shù)學(xué)

(1)組合數(shù)學(xué):

1.加法原理和乘法原理.

2.排列組合.

3.遞推關(guān)系.

(POJ3252,poj1850,poj1019,poj1942)

(2)數(shù)論.

1.素?cái)?shù)與整除問題

2.進(jìn)制位.

3.同余模運(yùn)算.

(poj2635, poj3292,poj1845,poj2115)

(3)計(jì)算方法.

1.二分法求解單調(diào)函數(shù)相關(guān)知識.(poj3273,poj3258,poj1905,poj3122)

七.計(jì)算幾何學(xué).

(1)幾何公式.

(2)叉積和點(diǎn)積的運(yùn)用(如線段相交的判定,點(diǎn)到線段的距離等). (poj2031,poj1039)

(3)多邊型的簡單算法(求面積)和相關(guān)判定(點(diǎn)在多邊型內(nèi),多邊型是否相交)

(poj1408,poj1584)

(4)凸包. (poj2187,poj1113)

中級:

一.基本算法:

(1)C++的標(biāo)準(zhǔn)模版庫的應(yīng)用. (poj3096,poj3007)

(2)較為復(fù)雜的模擬題的訓(xùn)練(poj3393,poj1472,poj3371,poj1027,poj2706)

二.圖算法:

(1)差分約束系統(tǒng)的建立和求解. (poj1201,poj2983)

(2)最小費(fèi)用最大流(poj2516,poj2516,poj2195)

(3)雙連通分量(poj2942)

(4)強(qiáng)連通分支及其縮點(diǎn).(poj2186)

(5)圖的割邊和割點(diǎn)(poj3352)

(6)最小割模型、網(wǎng)絡(luò)流規(guī)約(poj3308, )

三.數(shù)據(jù)結(jié)構(gòu).

(1)線段樹. (poj2528,poj2828,poj2777,poj2886,poj2750)

(2)靜態(tài)二叉檢索樹. (poj2482,poj2352)

(3)樹狀樹組(poj1195,poj3321)

(4)RMQ. (poj3264,poj3368)

(5)并查集的高級應(yīng)用. (poj1703,2492)

(6)KMP算法. (poj1961,poj2406)

四.搜索

(1)最優(yōu)化剪枝和可行性剪枝

(2)搜索的技巧和優(yōu)化 (poj3411,poj1724)

(3)記憶化搜索(poj3373,poj1691)

五.動態(tài)規(guī)劃

(1)較為復(fù)雜的動態(tài)規(guī)劃(如動態(tài)規(guī)劃解特別的施行商問題等)

(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)

(2)記錄狀態(tài)的動態(tài)規(guī)劃. (POJ3254,poj2411,poj1185)

(3)樹型動態(tài)規(guī)劃(poj2057,poj1947,poj2486,poj3140)

六.數(shù)學(xué)

(1)組合數(shù)學(xué):

1.容斥原理.

2.抽屜原理.

3.置換群與Polya定理(poj1286,poj2409,poj3270,poj1026).

4.遞推關(guān)系和母函數(shù).

(2)數(shù)學(xué).

1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)

2.概率問題. (poj3071,poj3440)

3.GCD、擴(kuò)展的歐幾里德(中國剩余定理) (poj3101)

(3)計(jì)算方法.

1.0/1分?jǐn)?shù)規(guī)劃. (poj2976)

2.三分法求解單峰(單谷)的極值.

3.矩陣法(poj3150,poj3422,poj3070)

4.迭代逼近(poj3301)

(4)隨機(jī)化算法(poj3318,poj2454)

(5)雜題.

(poj1870,poj3296,poj3286,poj1095)

七.計(jì)算幾何學(xué).

(1)坐標(biāo)離散化.

(2)掃描線算法(例如求矩形的面積和周長并,常和線段樹或堆一起使用).

(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)

(3)多邊形的內(nèi)核(半平面交)(poj3130,poj3335)

(4)幾何工具的綜合應(yīng)用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)

高級:

一.基本算法要求:

(1)代碼快速寫成,精簡但不失風(fēng)格

(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)

(2)保證正確性和高效性. poj3434

二.圖算法:

(1)度限制最小生成樹和第K最短路. (poj1639)

(2)最短路,最小生成樹,二分圖,最大流問題的相關(guān)理論(主要是模型建立和求解)

(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446

(3)最優(yōu)比率生成樹. (poj2728)

(4)最小樹形圖(poj3164)

(5)次小生成樹.

(6)無向圖、有向圖的最小環(huán)

三.數(shù)據(jù)結(jié)構(gòu).

(1)trie圖的建立和應(yīng)用. (poj2778)

(2)LCA和RMQ問題(LCA(最近公共祖先問題) 有離線算法(并查集+dfs) 和 在線算法

(RMQ+dfs)).(poj1330)

(3)雙端隊(duì)列和它的應(yīng)用(維護(hù)一個(gè)單調(diào)的隊(duì)列,常常在動態(tài)規(guī)劃中起到優(yōu)化狀態(tài)轉(zhuǎn)移的

目的). (poj2823)

(4)左偏樹(可合并堆).

(5)后綴樹(非常有用的數(shù)據(jù)結(jié)構(gòu),也是賽區(qū)考題的熱點(diǎn)).

(poj3415,poj3294)

四.搜索

(1)較麻煩的搜索題目訓(xùn)練(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)

(2)廣搜的狀態(tài)優(yōu)化:利用M進(jìn)制數(shù)存儲狀態(tài)、轉(zhuǎn)化為串用hash表判重、按位壓縮存儲狀態(tài)、雙向廣搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)

(3)深搜的優(yōu)化:盡量用位運(yùn)算、一定要加剪枝、函數(shù)參數(shù)盡可能少、層數(shù)不易過大、可以考慮雙向搜索或者是輪換搜索、IDA*算法. (poj3131,poj2870,poj2286)

五.動態(tài)規(guī)劃

(1)需要用數(shù)據(jù)結(jié)構(gòu)優(yōu)化的動態(tài)規(guī)劃.

(poj2754,poj3378,poj3017)

(2)四邊形不等式理論.

(3)較難的狀態(tài)DP(poj3133)

六.數(shù)學(xué)

(1)組合數(shù)學(xué).

1.MoBius反演(poj2888,poj2154)

2.偏序關(guān)系理論.

(2)博奕論.

1.極大極小過程(poj3317,poj1085)

2.Nim問題.

七.計(jì)算幾何學(xué).

(1)半平面求交(poj3384,poj2540)

(2)可視圖的建立(poj2966)

(3)點(diǎn)集最小圓覆蓋.

(4)對踵點(diǎn)(poj2079)

八.綜合題.

(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)gsyagsy 2007-11-29 00:22

以及補(bǔ)充 Dp狀態(tài)設(shè)計(jì)與方程總結(jié)

1.不完全狀態(tài)記錄

1青蛙過河問題

2利用區(qū)間dp

2.背包類問題

1 0-1背包,經(jīng)典問題

2無限背包,經(jīng)典問題

3判定性背包問題

4帶附屬關(guān)系的背包問題

5 + -1背包問題

6雙背包求最優(yōu)值

7構(gòu)造三角形問題

8帶上下界限制的背包問題(012背包)

3.線性的動態(tài)規(guī)劃問題

1積木游戲問題

2決斗(判定性問題)

3圓的最大多邊形問題

4統(tǒng)計(jì)單詞個(gè)數(shù)問題

5棋盤分割

6日程安排問題

7最小逼近問題(求出兩數(shù)之比最接近某數(shù)/兩數(shù)之和等于某數(shù)等等)

8方塊消除游戲(某區(qū)間可以連續(xù)消去求最大效益)

9資源分配問題

10數(shù)字三角形問題

11漂亮的打印

12郵局問題與構(gòu)造答案

13最高積木問題

14兩段連續(xù)和最大

152次冪和問題

16N個(gè)數(shù)的最大M段子段和

17交叉最大數(shù)問題

4.判定性問題的dp(如判定整除、判定可達(dá)性等)

1模K問題的dp

2特殊的模K問題,求最大(最小)模K的數(shù)

3變換數(shù)問題

5.單調(diào)性優(yōu)化的動態(tài)規(guī)劃

11-SUM問題

22-SUM問題

3序列劃分問題(單調(diào)隊(duì)列優(yōu)化)

6.剖分問題(多邊形剖分/石子合并/圓的剖分/乘積最大)

1凸多邊形的三角剖分問題

2乘積最大問題

3多邊形游戲(多邊形邊上是操作符,頂點(diǎn)有權(quán)值)

4石子合并(N^3/N^2/NLogN各種優(yōu)化)

7.貪心的動態(tài)規(guī)劃

1最優(yōu)裝載問題

2部分背包問題

3乘船問題

4貪心策略

5雙機(jī)調(diào)度問題Johnson算法

8.狀態(tài)dp

1牛仔射擊問題(博弈類)

2哈密頓路徑的狀態(tài)dp

3兩支點(diǎn)天平平衡問題

4一個(gè)有向圖的最接近二部圖

9.樹型dp

1完美服務(wù)器問題(每個(gè)節(jié)點(diǎn)有3種狀態(tài))

2小胖守皇宮問題

3網(wǎng)絡(luò)收費(fèi)問題

4樹中漫游問題

5樹上的博弈

6樹的最大獨(dú)立集問題

7樹的最大平衡值問題

8構(gòu)造樹的最小環(huán)

軟件設(shè)計(jì)師考試考點(diǎn)分析與真題詳解的目錄

比特培訓(xùn)-24期(2017年上)-軟件設(shè)計(jì)師培訓(xùn)課件,免費(fèi)下載

鏈接:

提取碼:2ocw

比特培訓(xùn)-24期(2017年上)-軟件設(shè)計(jì)師培訓(xùn)課件|00.2015年-2016年試題及解析|14.多媒體和知識產(chǎn)權(quán)(2017年下半年-打印版本)-軟設(shè).doc|13.網(wǎng)絡(luò)安全(2017年上半年-打印版本-改革版本).docx|12.數(shù)據(jù)庫打印版本(2017年上格式ok).docx|11.面向?qū)ο笤O(shè)計(jì)模式--打印版本(2017年上-Java版本-24期).docx|10.UML分析與設(shè)計(jì)(2017年上-第24期打印版本).doc|09.面向?qū)ο蠹癑ava實(shí)踐(2017年上--完整打印版本).docx|08.操作系統(tǒng)原理與技術(shù)(打印版本-2017年上-24期).doc|07.常用算法設(shè)計(jì)方法(2017年上-打印版本--鄧少勛--有答案--改革版本).docx|06.計(jì)算機(jī)體系結(jié)構(gòu)-打印版本(24期-2017年上).docx|05.數(shù)據(jù)結(jié)構(gòu)(2017年上-打印版本).docx|04.數(shù)據(jù)流圖與數(shù)據(jù)庫分析與設(shè)計(jì)(2017年上-打印版本).doc|03.程序設(shè)計(jì)語言基礎(chǔ)和編譯原理(2017年上半年-打印版本).doc|02.計(jì)算機(jī)網(wǎng)絡(luò)概述打印版(2017年上).docx。

NOIP提高組Pascal語言問題

第十三屆全國青少年信息學(xué)奧林匹克聯(lián)賽初賽試題

( 普及組 Pascal 語言 二小時(shí)完成)

● ● 全部試題答案均要求寫在答卷紙上,寫在試卷紙上一律無效 ●●

一、 單項(xiàng)選擇題(共20題,每題1.5分,共計(jì)30分。每題有且僅有一個(gè)正確答案。)

1. 在以下各項(xiàng)中,( )不是CPU的組成部分。

A.控制器 B.運(yùn)算器 C.寄存器 D.主板

2.在關(guān)系數(shù)據(jù)庫中,存放在數(shù)據(jù)庫中的數(shù)據(jù)的邏輯結(jié)構(gòu)以( )為主。

A.二叉樹 B.多叉樹 C.哈希表 D.二維表

3.在下列各項(xiàng)中,只有( )不是計(jì)算機(jī)存儲容量的常用單位。

A.Byte B.KB C.UB D.TB

4.ASCII碼的含義是( )。

A.二→十進(jìn)制轉(zhuǎn)換碼 B.美國信息交換標(biāo)準(zhǔn)代碼

C.?dāng)?shù)字的二進(jìn)制編碼 D.計(jì)算機(jī)可處理字符的唯一編碼

5.一個(gè)完整的計(jì)算機(jī)系統(tǒng)應(yīng)包括( )。

A.系統(tǒng)硬件和系統(tǒng)軟件 B.硬件系統(tǒng)和軟件系統(tǒng)

C.主機(jī)和外部設(shè)備 D.主機(jī)、鍵盤、顯示器和輔助存儲器

6.IT的含義是( )。

A.通信技術(shù) B.信息技術(shù) C.網(wǎng)絡(luò)技術(shù) D.信息學(xué)

7.LAN的含義是( )。

A.因特網(wǎng) B.局域網(wǎng) C.廣域網(wǎng) D.城域網(wǎng)

8.冗余數(shù)據(jù)是指可以由其它數(shù)據(jù)導(dǎo)出的數(shù)據(jù)。例如,數(shù)據(jù)庫中已存放了學(xué)生的數(shù)學(xué)、語文和英語的三科成績,如果還存放三科成績的總分,則總分就可以看作冗余數(shù)據(jù)。冗余數(shù)據(jù)往往會造成數(shù)據(jù)的不一致。例如,上面4個(gè)數(shù)據(jù)如果都是輸入的,由于操作錯(cuò)誤使總分不等于三科成績之和,就會產(chǎn)生矛盾。下面關(guān)于冗余數(shù)據(jù)的說法中,正確的是( )。

A.應(yīng)該在數(shù)據(jù)庫中消除一切冗余數(shù)據(jù)

B.用高級語言編寫的數(shù)據(jù)處理系統(tǒng),通常比用關(guān)系數(shù)據(jù)庫編寫的系統(tǒng)更容易消除冗余數(shù)據(jù)

C.為了提高查詢效率,在數(shù)據(jù)庫中可以保留一些冗余數(shù)據(jù),但更新時(shí)要做相容性檢驗(yàn)

D.做相容性檢驗(yàn)會降低效率,可以不理睬數(shù)據(jù)庫中的冗余數(shù)據(jù)

9.在下列各軟件,不屬于NOIP競賽(復(fù)賽)推薦使用的語言環(huán)境有( )。

A.gcc B.g++ C.Turbo C D.Free Pascal

10.以下斷電后仍能保存數(shù)據(jù)的有( )。

A.硬盤 B.高速緩存 C.顯存 D.RAM

11.在下列關(guān)于計(jì)算機(jī)語言的說法中,正確的有( )。

A.高級語言比匯編語言更高級,是因?yàn)樗某绦虻倪\(yùn)行效率更高

B.隨著Pascal、C等高級語言的出現(xiàn),機(jī)器語言和匯編語言已經(jīng)退出了歷史舞臺

C.高級語言比匯編語言程序更容易從一種計(jì)算機(jī)上移植到另一種計(jì)算機(jī)上

D.C是一種面向?qū)ο蟮母呒売?jì)算機(jī)語言

12.近20年來,許多計(jì)算機(jī)專家都大力推崇遞歸算法,認(rèn)為它是解決較復(fù)雜問題的強(qiáng)有力的工具。在下列關(guān)于遞歸算法的說法中,正確的是( )。

A.在1977年前后形成標(biāo)準(zhǔn)的計(jì)算機(jī)高級語言“FORTRAN77”禁止在程序使用遞歸,原因之一是該方法可能會占用更多的內(nèi)存空間

B.和非遞歸算法相比,解決同一個(gè)問題,遞歸算法一般運(yùn)行得更快一些

C.對于較復(fù)雜的問題,用遞歸方式編程一般比非遞歸方式更難一些

D.對于已經(jīng)定義好的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù) sin(x),應(yīng)用程序中的語句“y=sin(sin(x));”就是一種遞歸調(diào)用

13.一個(gè)無法靠自身的控制終止的循環(huán)成為“死循環(huán)”,例如,在C語言程序中,語句“while(1) printf(“*”);”就是一個(gè)死循環(huán),運(yùn)行時(shí)它將無休止地打印*號。下面關(guān)于死循環(huán)的說法中,只有( )是正確的。

A.不存在一種算法,對任何一個(gè)程序及相應(yīng)的輸入數(shù)據(jù),都可以判斷是否會出現(xiàn)死循環(huán),因而,任何編譯系統(tǒng)都不做死循環(huán)檢查

B.有些編譯系統(tǒng)可以檢測出死循環(huán)

C.死循環(huán)屬于語法錯(cuò)誤,既然編譯系統(tǒng)能檢查各種語法錯(cuò)誤,當(dāng)然也應(yīng)該能檢查出死循環(huán)

D.死循環(huán)與多進(jìn)程中出現(xiàn)的“死鎖”差不多,而死鎖是可以檢測的,因而,死循環(huán)也可以檢測的

14.在Pascal語言中,表達(dá)式 (23 or 2 xor 5)的值是( )。

A.18 B.1 C.23 D.32

15.在Pascal語言中,判斷整數(shù)a等于0或b等于0或c等于0的正確的條件表達(dá)式是( )。

A.not ((a0) or (b0) or (c0))

B.not ((a0) and (b0) and (c0))

C.not ((a=0) and (b=0)) or (c0)

D.(a=0) and (b=0) and (c=0)

16.地面上有標(biāo)號為A、B、C的三根柱,在A柱上放有10個(gè)直徑相同中間有孔的圓盤,從上到下依次編號為1,2,3……,將A柱上的部分盤子經(jīng)過B柱移入C柱,也可以在B柱上暫存。如果B柱上的操作記錄為“進(jìn)、進(jìn)、出、進(jìn)、進(jìn)、出、出、進(jìn)、進(jìn)、出、進(jìn)、出、出”。那么,在C柱上,從下到上的編號為( )。

A.2 4 3 6 5 7 B.2 4 1 2 5 7 C.2 4 3 1 7 6 D.2 4 3 6 7 5

17.與十進(jìn)制數(shù)1770對應(yīng)的八進(jìn)制數(shù)是( )。

A.3350 B.3351 C.3352 D.3540

18.設(shè)A=B=True,C=D=False,一下邏輯運(yùn)算表達(dá)式值為假的有( )。

A.(「A∧B)∨(C∧D∨A) B.「(((A∧B)∨C)∧D)

C.A∧(B∨C∨D)∨D D.(A∧(D∨C))∧B

19.(2070)16 + (34)8 的結(jié)果是( )。

A.(8332)10 B.(208A)16 C.(100000000110)2 D.(20212)8

20.已知7個(gè)節(jié)點(diǎn)的二叉樹的先根遍歷是1 2 4 5 6 3 7(數(shù)字為節(jié)點(diǎn)的編號,以下同),中根遍歷是4 2 6 5 1 7 3,則該二叉樹的后根遍歷是( )。

A.4 6 5 2 7 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2

二、問題求解(共2題,每題5分,共計(jì)10分)。

1、(子集劃分)將n個(gè)數(shù)(1,2,…,n)劃分成r個(gè)子集。每個(gè)數(shù)都恰好屬于一個(gè)子集,任何兩個(gè)不同的子集沒有共同的數(shù),也沒有空集。將不同劃分方法的總數(shù)記為S(n,r)。例如,S(4,2)=7,這7種不同的劃分方法依次為{(1),(234)},{(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。當(dāng)n=6,r=3時(shí),S(6,3)=______________。

(提示:先固定一個(gè)數(shù),對于其余的5個(gè)數(shù)考慮S(5,3)與S(5,2),再分這兩種情況對原固定的數(shù)進(jìn)行分析。)

2、(最短路線)某城市的街道是一個(gè)很規(guī)整的矩形網(wǎng)絡(luò)(見下圖),有7條南北向的縱街,5條東西向的橫街。現(xiàn)要從西南角的A走到東北角的B,最短的走法共有多少種?___________

(圖畫不了)

三、閱讀程序?qū)懡Y(jié)果(共4題,每題8分,共計(jì)32分。)

1、program j301;

var i,a,b,c,x,y:integer;

p:array[0..4] of integer;

begin

y:=20;

for i:=0 to 4 do read(p);

readln;

a:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7;

b:=p[0]+p[1] div ((p[2]+p[3]) div p[4]);

c:=p[0]*p[1] div p[2];

x:=a+b-p[(p[3]+3) mod 4];

if (x10)

then y:=y+(b*100-a) div (p[p[4] mod 3]*5)

else

y:=y+20+(b*100-c) div (p[p[4] mod 3]*5);

writeln(x,',',y);

end.

{注:本例中,給定的輸入數(shù)據(jù)可以避免分母為0或數(shù)組元素下表越界。}

輸入:6 6 5 5 3 輸出:______________________

2、program j302;

var a,b:integer;

var x,y:^integer;

procedure fun(a,b:integer);

var k:integer;

begin k:=a; a:=b; b:=k; end;

begin

a:=3; b:=6;

x:=@a; y:=@b;

fun(x^,y^);

writeln(a,',',b);

end.

輸出:_______________________________

3、program j303;

var a1:array[1..50] of integer;

var i,j,t,t2,n,n2:integer;

begin

n:=50;

for i:=1 to n do a1:=0;

n2:=round(sqrt(n));

for i:=2 to n2 do

if (a1=0) then

begin

t2:=n div i;

for j:=2 to t2 do a1[i*j]:=1;

end;

t:=0;

for i:=2 to n do

if (a1=0) then

begin

write(i:4); inc(t);

if (t mod 10=0) then writeln;

end;

writeln;

end.

輸出:_____________________________________________

_____________________________________________

4、Program j304;

Type str1=string[100];

Str2=string[200];

Var

S1:str1; s2:str2;

Function isalpha(c:char):Boolean;

Var i:integer;

Begin

i:=ord(c);

if ((i=65) and (i=90)) or ((i=97) and (i=122)) then

isalpha:=true

else isalpha:=false;

end;

function isdigit(c:char):Boolean;

var i:integer;

begin

i:=ord(c); if (i=48) and (i=57) then isdigit:=true

else isdigit:=false;

end;

procedure expand(s1:str1;var s2:str2);

var i,j:integer; a,b,c:char;

begin

j:=1; c:=char(1); i:=0;

while (i=ord(s1[0])) do

begin inc(i); c:=s1;

if c='-' then begin {1}

a:=s1[i-1]; b:=s1[i+1];

if (isalpha(a) and isalpha(b)) or (isdigit(a) and isdigit(b)) then begin

dec(j);

while (ord(upcase(a))ord(upcase(s1[i+1]))) do

begin

s2[j]:=a; inc(j); inc(a); end;

end

else

begin s2[j]:=c; inc(j); end;

end{1}

else begin s2[j]:=c; inc(j); end; end; s2[0]:=char(j-2); end;

begin readln(s1); expand(s1,s2); writeln(s2);

end.

輸入:wer2345d-h454-82qqq 輸出:__________________________

四、完善程序(前4空,每空2.5分,后6空,每空3分,共28分)。

1、(求字符的逆序)下面的程序的功能是輸入若干行字符串,每輸入一行,就按逆序輸出該行,最后鍵入-1終止程序。

請將程序補(bǔ)充完整。

Program j401;

type str1=string[100];

var line:str1; kz:integer;

procedure reverse(var s:str1);

var I,j:integer; t:char;

begin

i:=1; j:=length(s);

while (ij) do begin

t:=s; s:=s[j]; s[j]:=t;

; ;

end;

end;

begin

writeln(‘continue? -1 for end.’);

readln(kz);

while ( )do

begin

readln(line);

;

writeln(line);

writeln(‘continue? -1 for end.’);

readln(kz);

end;

end.

2 2 3 3

2 -1 1 3

4 1 1 5

4 4 5 5

2、(棋盤覆蓋問題)在一個(gè)2k×2 k個(gè)方格組成的棋盤中恰有一個(gè)方格與其它方格不同(圖中標(biāo)記為-1的方格),稱之為特殊方格?,F(xiàn)用L型(占3個(gè)小方格)紙片覆蓋棋盤上除特殊方格的所有部分,各紙片不得重疊,于是,用到的紙片數(shù)恰好是(4 k-1)/3。在下表給出的一個(gè)覆蓋方案中,k=2,相同的3各數(shù)字構(gòu)成一個(gè)紙片。

下面給出的程序使用分治法設(shè)計(jì)的,將棋盤一分為四,依次處理左上角、右上角、左下角、右下角,遞歸進(jìn)行。請將程序補(bǔ)充完整。

(圖畫不了...郁悶)

Program j402;

type arr1=array[1..65] of integer;

arr2=array[1..65] of arr1;

var board:arr2; tile:integer; size,dr,dc:integer;

procedure chessboard(tr,tc:integer; dr,dc:integer; var size:integer);

var t,s:integer;

begin

if (size=1) then ;

t:=tile; inc(tile);

s:=size div 2;

if then chessboard(tr,tc,dr,dc,s) else begin

board[tr+s-1]:=t;

end;

if (drtr+s) and (dc=tc+s) then chessboard(tr,tc+s,dr,dc,s)

else begin board[tr+s-1][tc+s]:=t;

; end;

if (dr=tr+s) and (dctc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin

board[tr+s][tc+s]:=t;

; end;

if (dr=tr+s) and (dc=tc+s) then chessboard(tr+s,tc+s,dr,dc,s)

else begin board[tr+s][tc+s]:=t;

; end;

end;

procedure prt1(n:integer);

var I,j:integer;

begin

for I:=1 to n do begin

for j:=1 to n do write(board[j]:3);

writeln;

end;

end;

begin

writeln(‘input size(4/8/16/64):’);

readln(size); writeln(‘input the position of special block(x,y):’);

readln(dr,dc); board[dr][dc]:=-1;

tile:=1; chessboard(1,1,dr,dc,size); prt1(size);

end.

NOIP2007年普及組(Pascal語言)參考答案與評分標(biāo)準(zhǔn)

一、單項(xiàng)選擇題:(每題1.5分)

題號 1 2 3 4 5 6 7 8 9 10

答案 D D C B B B B C C A

題號 11 12 13 14 15 16 17 18 19 20

答案 C A A A B D C D A A

二、問題求解:(每題 5分)

1.90 2.210

三、閱讀程序?qū)懡Y(jié)果

1. 15, 46(對1個(gè)數(shù)給4分,無逗號扣1分)

2. 3, 6

3. 2 3 5 7 11 13 17 19 23 29

31 37 41 43 47

4. wer2345defgh45456782qqq

四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分)

1.

① inc(i) 或i:=i+1

② dec(j) 或 j:=j-1

③ kz-1

④ reverse(line)

2.

⑤ exit

⑥ (drtr+s)and(dctc+s)

⑦ chessboard(tr,tc,tr+s-1,tc+s-1,s)

⑧ chessboard(tr,tc+s,tr+s-1,tc+s,s)

⑨ chessboard(tr+s,tc,tr+s,tc+s-1,s)

⑩ chessboard(tr+s,tc+s,tr+s,tc+s,s)

貌似我考過了 不難

希望對你能有所幫助。

名稱欄目:棋盤覆蓋問題代碼java 棋盤覆蓋問題算法分析
文章來源:http://muchs.cn/article36/dohsipg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站小程序開發(fā)、網(wǎng)站內(nèi)鏈、網(wǎng)站收錄云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)