關於堆的判斷(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行,每行給出乙個...