消息关闭
    暂无新消息!

哈夫曼树哪里错了。。。

问题作者 : 小差婆2017-08-19发布
今天看到一本书上写的优先队列建立小顶堆
然后写了一下哈夫曼树求权值和最小。。
报错看不懂,小白求教。
#include <iostream>
#include<queue>
#include<cstdio>
using namespace std;
priority_queue<int ,vector<int >,greater<int >> Q;//建立一个小顶堆
int main(){
int n;
while(scanf("%d",&n)!=EOF){
while(Q.empty()==false) Q.pop(); //清空堆栈
for(i=1;i<=n;i++){
int x;
scanf("%d",&x);
Q.push(x);
}
int ans=0;
while(Q.size()>1){
int a=Q.top();
Q.pop();
int b=Q.top();
Q.pop();
ans+=a+b;
Q.push(a+b);
}
printf("%d\n",ans);
}
return 0;
}
报错如下:
C:\Users\1\Desktop\程序设计\c++\1.cpp(6) : error C2146: syntax error : missing ',' before identifier 'Q'
C:\Users\1\Desktop\程序设计\c++\1.cpp(6) : error C2065: 'Q' : undeclared identifier
C:\Users\1\Desktop\程序设计\c++\1.cpp(6) : error C2143: syntax error : missing '>' before ';'
C:\Users\1\Desktop\程序设计\c++\1.cpp(10) : error C2228: left of '.empty' must have class/struct/union type
C:\Users\1\Desktop\程序设计\c++\1.cpp(10) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.

1.obj - 5 error(s), 0 warning(s)



1个回答

︿ 1

#include<iostream>
#include<queue>
#include<cstdio>
using namespace std;
priority_queue<int ,vector<int >,greater<int >> Q;//建立一个小顶堆
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
while(Q.empty()==false) 
Q.pop(); //清空堆栈
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
Q.push(x);
}
int ans=0;
while(Q.size()>1){
int a=Q.top();
Q.pop();
int b=Q.top();
Q.pop();
ans+=a+b;
Q.push(a+b);
}
printf("%d\n",ans);
}
return 0;
}