UVA 133 - The Dole Queue
不知道为什么会有Runtime Error咧..求高手!
挺简单的用list的题目。
View Code
1 #include <iostream> 2 #include <list> 3 using namespace std; 4 5 int main(){ 6 int N, k, m; 7 cin >> N >> k >> m; 8 while (N != 0 && k != 0 && m != 0){ 9 10 list<int> ring; 11 for (int i = 1; i <= N; i++){ 12 ring.push_back(i); 13 } 14 15 list<int>::iterator it = ring.begin(); 16 list<int>::reverse_iterator rit = ring.rbegin(); 17 bool start = true; 18 while (!ring.empty()){ 19 for (int i = 1; i < k; i++){ 20 ++it; 21 if (it == ring.end()) 22 it = ring.begin(); 23 } 24 for (int i = 1; i < m; i++){ 25 ++rit; 26 if (rit == ring.rend()){ 27 rit = ring.rbegin(); 28 } 29 } 30 int first = *it, second = *rit; 31 if (start) 32 start = false; 33 else 34 cout << ","; 35 36 if (first >= 10) 37 cout << " "; 38 else 39 cout << " "; 40 cout << first; 41 it = ring.erase(it); 42 if (*it == *rit){ 43 ++it; 44 } 45 if (it == ring.end()) 46 it = ring.begin(); 47 48 49 if (first != second){ 50 if (second >= 10) 51 cout << " "; 52 else 53 cout << " "; 54 cout << second; 55 if (rit == --(ring.rend())){ 56 ring.erase(--rit.base()); 57 rit = ring.rbegin(); 58 } 59 else{ 60 list<int>::reverse_iterator temp(ring.erase(--rit.base())); 61 rit = temp; 62 } 63 } 64 } 65 cout << endl; 66 cin >> N >> k >> m; 67 } 68 return 0; 69 }
这里的东西都是自娱自乐的.我只是抱着构思算法的心态去做UVA的题.
我所有的code都不可能AC的.因为我就没想着让它能AC.


浙公网安备 33010602011771号