STL是个好东西!
看到这道题,我当然想到了堆;在STL里有个东西叫做优先队列priority_queue(其实set做这道题更合适),然后再开个桶看这个数是不是已经有了,有了就不放进来,没有就扔进来;完美;return 0;
下面放代码
#include<bits/stdc++.h> #include<queue> //加上这个头文件在码代码的时候方便很多 using namespace std; bool b[2000];//就是个桶 int n; priority_queue<int,vector<int>,greater<int> > data; //int是类型,vector是容器,greater是小根堆 int main() { // freopen("testdata.in","r",stdin);//测试用的无视就好了 cin>>n; int x; for(int i=1;i<=n;i++) { cin>>x; if(!b[x]) { data.push(x); b[x]=true; //输入过的数字下次不输入了 } } cout<<data.size() <<endl;//返回元素个数 int k=data.size() ;//这里必须记录一下,否则下面运算时.size()返回值变化就坏了 for(int i=1;i<=k;i++) { cout<<data.top()<<' ' ; data.pop();//弹出最上边的元素 } return 0; }
就是这样!有什么问题希望大家能指出!ありがとうございます。