文章

2

粉丝

406

获赞

0

访问

19.4k

头像
1127堆的判断能否利用优先队列?只过了50%
我要提问
发布于2020年5月3日 11:21
阅读数 9.9k

#include <iostream>
#include <queue>
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    int num[n];
    priority_queue<int,vector<int>,less<int> > que;
    for(int i=0;i<n;i++){
        scanf("%d",&num[i]);
        que.push(num[i]);
    }
    bool flag=true;
    for(int i=0;i<n;i++){
        int x=que.top();
        que.pop();

        //printf("%d ",x);
        if(x!=num[i]){
            flag=false;
            break;
        }
    }
    if(flag==false){
        printf("No\n");
    }else{
        printf("Ye...

登录查看完整内容


登录后发布评论

1 条评论
admin SVIP
2020年5月3日 11:42

你这个写法肯定是不行的,每次top都是最小的元素,那取出来的值一定是单调性的。实际上你需要用迭代器遍历优先队列,但是优先队列为了保证安全性不提供这个遍历功能,所以不如自己手写一个堆来模拟这个优先队列laugh

赞(0)