uva12100(打印队列)

直接模拟就好了,注意一下结束的条件。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <string>
 4 #include <queue>
 5 #include <cstdio>
 6 #include <vector>
 7 
 8 using namespace std;
 9 queue<int> q;
10 int main()
11 {
12     int n,i,j,k,t;
13     int a[1010];
14     int b[1010];
15     cin >> t;
16     while(t--)
17     {
18         cin >> n >> k;
19         for(i=0; i<n; i++)
20             cin >> a[i];
21         for(i=0; i<n; i++)
22             q.push(a[i]);
23         for(i=0; i<n; i++)
24             b[i] = a[i];
25         sort(b,b+n);
26         int tail = k; //tail是指向目标的指针
27         int cnt = 1;
28         int flag = n-1;
29         while(1)
30         {
31             if(tail < 0)
32                 tail = q.size()-1;
33             if(q.front()==b[flag])
34             {
35                 if(tail == 0)
36                     break;
37                 q.pop();
38                 tail--;
39                 cnt++;
40                 flag--;
41             }
42             else
43             {
44                 int m = q.front();
45                 q.pop();
46                 q.push(m);
47                 tail--;
48             }
49         }
50         cout << cnt << "\n";
51         while(!q.empty())
52             q.pop();     //一定不要忘记把队列清空!!!
53     }
54     return 0;
55 }

 

posted @ 2017-01-17 12:00  萧萧Hsiao  阅读(446)  评论(0编辑  收藏  举报