【HUOJ】排序(queue 優先隊列)
阿新 • • 發佈:2018-05-21
rsquo ace targe end vector std its AC ring
排序
題意:輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麽就得到一行用空格分割的若幹非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若幹個‘0’組成的,這時這個整數就是0)。
你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。
思路:我先用string a輸入,然後每一個ai判斷是不是5,如果不是5就放進一個隊列裏,如果是5就進行一波判斷
另外,我WA了一個地方是輸入520這種數,我會輸出0 20,然後改了一波23333~
先放上我的代碼:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; int main() { string a; queue<char>q; while(cin>>a) { int x; priority_queue <int,vector<int>,greater<int> >p; //queue<int>p;int l=a.length(); for(int i=0; i<l; i++) { if(a[i]!=‘5‘) { q.push(a[i]); } if(a[i]==‘5‘||i==l-1) { x=0; int flag=0; if(q.empty()) continue;while(!q.empty()) { if(q.front()==‘0‘&&flag==0) { q.pop(); } else { flag=1; x=x*10+(q.front()-‘0‘); q.pop(); } } if(flag==0) p.push(0); else p.push(x); } } cout<<p.top(); p.pop(); while(!p.empty()) { cout<<" "<<p.top(); p.pop(); } cout<<endl; } return 0; }
做題用時:31分鐘
整理博客:7分鐘
【HUOJ】排序(queue 優先隊列)