PTA 關於堆的判斷

2021-10-01 11:30:41 字數 2335 閱讀 4056

7-13 關於堆的判斷 (25分)

輸入格式:

每組測試第1行包含2個正整數n(≤ 1000)和m(≤ 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間[−10000,10000]內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。

輸出格式:

對輸入的每個命題,如果其為真,則在一行中輸出t,否則輸出f。

輸入樣例:

5 4

46 23 26 24 10

24 is the root

26 and 23 are siblings

46 is the parent of 23

23 is a child of 10

輸出樣例:

ftf

t

首先吸取堆的操作那道題的教訓,它屬於新增了全部元素後再調整的型別。然後就是命題的讀入和判斷這兩個部分了。

需要注意的是這個判斷條件必須是充分的,比如判斷兄弟結點siblings。兄弟結點的下標值一定相差1,但結點的下標值相差1的結點不一定是兄弟結點,可以減一除二判等來看雙親是否相同。

#include

#include

#include

#include

#include

using

namespace std;

intinputstr

(char

*arr)

;//讀入乙個c風格的字串行,'\n'作為終止讀入的標誌

//返回讀入字串的長度

intfind_number

(char

* str,

int i)

;//從字元陣列下標為i的元素開始找一串數字

//序列並返回這個數,可以是以'+'或者'-'開頭的任意長度的數字序列

void

judge_expreesion

(char

* view, vector<

int> first_heap)

;//判斷命題(每個字串行)對於最小堆描述的真假

intmain()

//將一系列給定數字順序插入乙個初始為空的最小堆

getchar()

;//吃掉scanf留下的'\n'字元

char expressions[20]

[48];

//用來儲存命題的字元陣列

//逐個判斷所給命題

for(

int i =

0; i < expressions_num; i++

)return0;

}int

inputstr

(char

*arr)

return i;

}int

find_number

(char

* str,

int i)

for(j = i + number_length -

1; j >= i; j--

)//計算這個數字序列

//對應數字的值

}else

//不帶'+'或'-'的數字

for(j = i + number_length -

1; j >= i; j--

)//計算這個數字序列

//對應數字的值

number *=-

1;}return number;

}void

judge_expreesion

(char

* view, vector<

int> first_heap)if(

strstr

(view,

"siblings")!=

null

)//與siblings兄弟相關的命題if(

strstr

(view,

"parent")!=

null

)//與parent雙親特性相關的命題if(

strstr

(view,

"child")!=

null

)//與child孩子特性相關的命題

}

PTA 7 38 關於堆的判斷

題目重述 輸入格式 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 以及需要判斷的命題數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個命題。題目保證命題中的結點鍵值都是存在的。輸出格式 對輸入的每個命題,如果其...

PTA 關於堆的判斷(25分)

一 堆的概念 堆是完全二叉樹。參考 4條訊息 資料結構堆的概念 堆排序的思想以及演算法過程詳解 lifegoeson csdn部落格 堆的概念 二 堆的初始化 一般給出乙個陣列,需要乙個乙個數的新增到堆,而堆也分為大頂堆和小頂堆,此時需要了解堆的上調和下調。參考 二 例題 l2 012 關於堆的判斷...

關於堆的判斷

將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種 每組測試第1行包含2個正整數n 1000 和m 20 分別是插入元素的個數 以及需要判斷的命題數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的小頂堆的整數。之後m行,每行給出乙個...