關於堆的判斷(25 分)

2021-08-29 02:06:33 字數 1345 閱讀 9720

關於堆的判斷(25 分)

將一系列給定數字順序插入乙個初始為空的小頂堆h。隨後判斷一系列相關命題是否為真。命題分下列幾種:

每組測試第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

堆資料結構是一種陣列物件,它可以被視為一科完全二叉樹結構。它的特點是父節點的值大於(小於)兩個子節點的值(分別稱為大頂堆和小頂堆)。它常用於管理演算法執行過程中的資訊,應用場景包括堆排序優先佇列等。

通過堆的概念 , 我們就應該知道堆的結構了  。 對於堆的構造如下: 

建造堆的時候 , 我們總是進行一種自下到上的比較搜尋 , 保證所建造的堆是最大堆或者是最小堆。

也即是說 , 每當我們往堆裡面插入元素的時候 , 我們總是通過改點 , 想其父節點進行向上搜尋比較 , 

當是建造最小堆時 , 如果在該點自樹的根的這條路上有節點比該值大 , 我們就將其往下移動 , 直到滿足最小堆。 

#include #include 

#include

#include

#include

using

namespace

std;

vector

v;int find(int a)

int main(int argc, char

const *argv)

scanf(

"%*c");

while(m--)

else

if(s[strlen(s) - 1] == 's'

)

else

else}}

return0;

}

9 11 堆 關於堆的判斷(25 分)

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

5 12 關於堆的判斷 25分

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

7 3 關於堆的判斷(25 分)

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