- 学姐吃牛排
- 2014-11-01 16:27:13 @
include <cstdio>
include <cstring>
using namespace std;
int N, T;
int Node[1005];
bool isTree() {
if(N == 0)
return true;
bool res = true;
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i * 2] < Node[i] && Node[i] < Node[i * 2 + 1])) {
res = false;
break;
}
if(res)
return true;
res = true;
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i * 2] > Node[i] && Node[i] > Node[i * 2 + 1])) {
res = false;
break;
}
return res;
}
bool isHeap() {
if(0 == N)
return true;
bool res = true;
// 先判断小根堆
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i] <= Node[i * 2] && Node[i] <= Node[i * 2 + 1])) {
res = false;
break;
}
if(res)
return true;
res = true;
// 判断大根堆
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i] >= Node[i * 2] && Node[i] >= Node[i * 2 + 1])) {
res = false;
break;
}
return res;
}
int main() {
scanf("%d", &T);
for(int i = 1;i <= T;i ++) {
memset(Node, 0, sizeof Node);
scanf("%d", &N);
for(int j = 1;j <= N;j ++)
scanf("%d", &Node[j]);
bool fTree = isTree();
bool fHeap = isHeap();
printf("Case #%d: ", i);
if(fTree && fHeap)
printf("Both\n");
else if(fTree)
printf("BST\n");
else if(fHeap)
printf("Heap\n");
else
printf("Neither\n");
}
return 0;
}
0 条评论
信息
- ID
- 1897
- 难度
- 7
- 分类
- (无)
- 标签
- (无)
- 递交数
- 1233
- 已通过
- 215
- 通过率
- 17%
- 被复制
- 4
- 上传者