1155 Heap Paths (30 分)(堆+dfs遍历)
2024-10-20 00:34:25
比较简单的一题
遍历左右的时候注意一下
#include<bits/stdc++.h> using namespace std;
const int N=1e3+;
int s[N*];
int cnt=;
vector<int>t;
vector<int>p[N];
int n;
void dfs(int v)
{
if(s[v]==-){
int i=v/;
if(s[i*]!=-||s[i*+]!=-){
return;
}
p[cnt++]=t; return ;
}
t.push_back(s[v]);
dfs(v*+);
dfs(v*);
t.pop_back();
}
int main()
{
memset(s,-,sizeof(s));
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&s[i]);
}
dfs();
for(int i=;i<cnt;i++){
if(i%==) continue;
for(int j=;j<p[i].size();j++){
if(j) printf(" ");
printf("%d",p[i][j]);
}
printf("\n");
}
bool Max=false;
bool Min=false;
for(int i=;i<n;i++){
if(s[i*]!=-){
if(s[i*]>s[i]) Max=true;
}
if(s[i*+]!=-){
if(s[i*+]>s[i]) Max=true;
}
}
for(int i=;i<n;i++){
if(s[i*]!=-){
if(s[i*]<s[i]) Min=true;
}
if(s[i*+]!=-){
if(s[i*+]<s[i]) Min=true;
}
}
if(Max==false){
printf("Max Heap\n");
}
else if(Min==false){
printf("Min Heap\n");
}
else{
printf("Not Heap\n");
}
return ;
}
最新文章
- 如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?
- Thoughtful function is also good for investigation
- spring之BeanFactory
- PHP 批量生成静态文件目录代码
- php练习题:投票
- 在Linux中使用VS Code编译调试C++项目
- Duanxx的STM32学习: 启动模式,BOOT0和BOOT1具体解释
- 【转】Robot Framework 快速入门
- iOS开发技术分享(1)— iOS本地数据存储
- Jquery的AJAX应用详解
- 学习PID
- [POI2014]HOT-Hotels
- BugKu 这是一张单纯的图片
- day 23 对象的名称空间 类,对象属性和方法 封装 接口提供
- Dijkstra算法之 Java详解
- PHP正则提取或替换img标记属性
- 使用FreeMarker生成word文档
- 视觉和imu融合的算法研究
- CacheManager.NET
- 吴裕雄 oracle PL/SQL编程