codevs 2977 二叉堆练习1x
生活随笔
收集整理的這篇文章主要介紹了
codevs 2977 二叉堆练习1x
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間限制: 10 s
空間限制: 32000 KB 題目等級 : 白銀 Silver 題目描述 Description已知一個二叉樹,判斷它是否為二叉堆(小根堆)
輸入描述 Input Description二叉樹的節點數N和N個節點(按層輸入)
輸出描述 Output DescriptionYES或NO
樣例輸入 Sample Input樣例輸入1
3
1 4 9
樣例輸入2
3
6 4 9
樣例輸出 Sample Output樣例輸出1
YES
樣例輸出2
NO
數據范圍及提示 Data Size & Hint對于20%的數據? N≤20
對于50%的數據? N≤1000
對于100%的數據 N≤50000,每個節點≤10000
分類標簽 Tags 點此展開?
代碼如下
1 #include <cstdlib> 2 #include <cstdio> 3 #include <iostream> 4 5 using namespace std; 6 7 int n,tree[100001],bb,n1; 8 9 int pd()//是否為小根堆 10 { 11 for (int i=n1-1; i>=2; i--) 12 { 13 if (tree[i]>tree[i/2] && !bb) return 0;//當n為0時 14 if (tree[i]<tree[i/2] && bb) return 0; 15 } 16 return 1; 17 } 18 19 int main() 20 { 21 scanf("%d",&n); 22 n1=n; 23 for (int i=1; i<=n; i++) 24 scanf("%d",&tree[i]); 25 while (tree[n1]==tree[n1/2]) n1--; 26 if (tree[n1]>tree[n1/2]) bb=1; 27 if (pd()) cout<<"YES"; 28 else cout<<"NO"; 29 return 0; 30 }?
?
轉載于:https://www.cnblogs.com/zxqxwnngztxx/p/6652642.html
總結
以上是生活随笔為你收集整理的codevs 2977 二叉堆练习1x的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统集成项目管理工程师知识点
- 下一篇: 将h.264视频流封装成flv格式文件(