对于一个给定的两两不等的正整数序列,
笛卡尔树是这样的一棵二叉树:首先,它是一个最小堆,即除了根结点,
每个节点的权值都大于父节点的权值;其次,它的中序遍历恰好就是给定的序列。
例如,对于序列7、2、12、1、10、5、15、3,
下图就是一棵对应的笛卡尔树。
现输入序列的规模n(1≤n<100)和序列的n个元素,
试求其对应的笛卡尔树的深度d(根节点深度为1),
以及有多少个叶子节点的深度为d。
#include<iostream>
using namespace std;
const int SIZE=100+5;
const int INFINITY=1000000;
int n,a[SIZE],maxDeep,num;
void solve(int left,int right,int deep)
{
int i,j,min;
if(deep>maxDeep){
maxDeep=deep;
num=1;
}
else if(deep==maxDeep)
① ; //num++;
min= INFINITY;
for(i=left;i<=right;i++)
if(min>a[i]){
min=a[i];
② ; //j=i;
}
if(left<j)
③ ; //solve(left,j-1,deep+1)
if(j<right)
④ ;//solve(j+1,right,deep+1)
}
int main()
{
int i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
maxDeep=0;
solve(1,n,1);
cout<<maxDeep<<' '<<num<<endl;
return 0;
}
初赛试题:完善程序题
NOIP 提高组 初赛 三、问题求解 习题集NOIP1995-NOIP2018
NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题
NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题
NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题_dllglvzhenfeng的博客-CSDN博客
【NOIP2007 普及组】 问题求解题 (子集划分)+Floyd算法
NOIP 2008 普及组初赛试题完善程序 4.2 (找第k大的数)
NOIP 2010 普及组 初赛试题 完善程序 4.1 哥德巴赫猜想
NOIP 2010 普及组初赛试题完善程序4.2(过河问题)
NOIP 2012 提高组初赛试题 完善程序题 5.2 新壳栈
NOIP 2016 普及组初赛试题_完善程序 4.2 郊游活动
NOIP 2017 提高组初赛试题_完善程序 5.1 大整数除法
NOIP 2017 普及组初赛试题_完善程序 4.2:切割绳子
NOIP2018初赛普及组完善程序题第2题(4.2) 第 23 题