NOIP2008普及組初賽難點整理

2021-10-09 16:50:30 字數 3529 閱讀 9086

t5. 完全二叉樹共有 2×n

−1

2\times n-1

2×n−

1 個結點,則它的葉結點數是(n)。

【解析】有 2×n

−1

2\times n-1

2×n−

1 個結點的完全二叉樹,最後乙個擁有孩子結點的父結點的編號為⌊2n

−12⌋

=n−1

\lfloor \frac\rfloor=n-1

⌊22n−1

​⌋=n

−1,那麼葉結點數=2×

n−1−

(n−1

)=

n=2\times n - 1 - (n - 1) = n

=2×n−1

−(n−

1)=n

t16. 物件導向程式設計(object-oriented programming)是一種程式設計的方**,它將物件作為程式的基本單元,將資料和程式封裝在物件中,以提高軟體的重用性、靈活性和擴充套件性。下面關於物件導向程式設計的說法中,不正確的是( )。

【解析】選項:物件導向程式設計通常採用自頂向下設計方法進行設計,是錯誤的。程式設計的方法包括:結構化設計物件導向設計方法。結構化的程式設計通常採用自頂向下的設計方法,逐步求精。可以說,是大問題化成小問題,逐個求解。

t17. 在 32×32

32\times32

32×3

2 點陣的「字型檔」中,漢字「北」與「京」的字模占用位元組數之和是(256)。

【解析】 在 32×32

32\times32

32×3

2點陣的「字型檔」中,每個字模占用的位元組數為:32×32

÷8

=128

32\times32\div8=128

32×32÷

8=12

8。漢字「北」與「京」的字模占用位元組數之和是256

t2. 書架上有 4 本不同的書 a、b、c、d。其中 a 和 b 是紅皮的,c 和 d 是黑皮的。把這 4 本書擺在書架上,滿足所有黑皮的書都排在一起的擺法有(12)種。滿足 a 必須比 c 靠左,所有紅皮的書要擺放在一起,所有黑皮的書要擺放在一起,共有(4)種擺法。

【解析】

t4.

#include

#include

using

namespace std;

#define max 100

void

solve

(char first,

int spos_f,

int epos_f,

char mid,

int spos_m,

int epos_m)

solve

(first, spos_f +

1, spos_f +

(root_m - spos_m)

, mid, spos_m, root_m -1)

;solve

(first, spos_f +

(root_m - spos_m)+1

, epos_f, mid, root_m +

1, epos_m)

; cout << first[spos_f];}

intmain()

輸入:

7

abdcegf

bdagecf

輸出:

dbgefca

【解析】輸入二叉樹的先根遍歷序列和後根遍歷序列,求後根遍歷序列。

t1.(字串替換)給定乙個字串 s(s 僅包含大小寫字母),下面的程式將 s 中的每個字母用規定的字母替換,並輸出 s 經過替換後的結果。程式的輸入是兩個字串,第乙個字串是給定的字串 s,第二個字串 s』 由 26 個字母組成,它是 a−z 的任一排列,大小寫不定,s』 規定了每個字母對應的替換字母:s 中的第乙個字母是字母 a 和 a 的替換字母,即 s 中的 a 用該字母的大寫替換, s 中的 a 用該字母的小寫替換;s』 中的第二個字母是字母 b 和 b 的替換字母,即 s 中的 b 用該字母的大寫替換,s 中的 b 用該字母的小寫替換;……以此類推。

#include

#include

char change[26]

, str[

5000];

using

namespace std;

void

checkchangerule()

}void

changestring()

}int

main()

【解析】

t2. (找第 k 大的數)給定乙個長度為 1,000,000 的無序正整數序列, 以及另乙個數 n (1≤n

≤1000000

1\le n\le1000000

1≤n≤10

0000

0), 然後以類似快速排序的方法找到序列中第 n 大的數(關於第 n 大的數:例如序列 中第 3 大的數是 4)。

#include

using

namespace std;

int a[

1000001

],n,ans =-1

;void

swap

(int

&a,int

&b)int

findkth

(int left,

int right,

int n)

else

break

;while

(i < j && ③) i++;if

(i < j)

else

break;}④if

(i < n)

return

findkth

( ⑤ );if

(i > n)

return ⑥

return i;

}int

main()

【解析】通過快速排序的思想,查詢第n大的數。根據輸出cout << a[ans];,可以確定是將序列按照從大到小的順序進行排列。函式findkth()將陣列分成兩部分,左邊由大於等於value的數組成,右邊由小於value的數組成。

NOIP2008普及組題解

noip2008普及組題解 從我在其他站的部落格直接搬過來的 posted 2016 04 16 01 11 t1 isbn號碼 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如 x xx x 其中符號 就是分隔符 鍵盤上的減號 最後一位...

NOIP2008普及組 排座椅

問題描述 上課的時候總有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的d對同學上課時會交頭接耳。同學們在教室中坐成了m行n列,坐在第i行第j列的同學的位置是 i,j 為了方便同學們進出,在教室中設定了k...

NOIP2008 普及組 ISBN 號碼

題目鏈結 題目描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如x xx x,其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0...