16行代码AC_【第十届蓝桥杯省赛c/c++B组真题解析】7.完全二叉树的权值
生活随笔
收集整理的這篇文章主要介紹了
16行代码AC_【第十届蓝桥杯省赛c/c++B组真题解析】7.完全二叉树的权值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
勵志用更少的代碼做更高效的表達
給定一棵包含 N 個節點的完全二叉樹,樹上每個節點都有一個權值,按從
上到下、從左到右的順序依次是 A1, A2, · · · AN,如下圖所示
現在小明要把相同深度的節點的權值加在一起,他想知道哪個深度的節點
權值之和最大?如果有多個深度的權值和同為最大,請你輸出其中最小的深度。
注:根的深度是 1。
【輸入格式】
第一行包含一個整數 N。
第二行包含 N 個整數 A1, A2, · · · AN 。
【輸出格式】
輸出一個整數代表答案。
【樣例輸入】
7
1 6 5 4 3 2 1
【樣例輸出】
2
刷題時乍一看以為是考查樹的數據結構, 特地沒做,想留到晚上細細研究。 結果仔細一看發現, md就是一求和題, 我吐了。
#include <bits/stdc++.h> using namespace std; int a[100000]; int main(){//輸入個數 int n,i,m,max1,c,z=1;//實現輸入scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);//實現相同深度權值最大的最小深度max1=a[0];//最大值初始化 for(m=1;m<sqrt(n);m++){c=0;//權值和初始化for(i=1;((pow(2,m)-1)<=i)&&((pow(2,m+1)-1)>i);i++)c=c+a[i]; if(c>max1) z=m+1;}printf("%d\n",z); return 0;}總結
以上是生活随笔為你收集整理的16行代码AC_【第十届蓝桥杯省赛c/c++B组真题解析】7.完全二叉树的权值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【解题报告+感想感言】2019年第十届蓝
- 下一篇: 【GIF动画+完整可运行源代码】C++实