#include<iostream>
#include<vector>
using namespace std;
int n;
vector<int> cards;
int main()
{
while(cin >> n && n){
int first = 1;
for(int i = 1; i <= n; i++)
cards.push_back(i);
cout << "Discarded cards:";
while(!cards.empty()){
if(cards.size() == 1)
break;
if(first){
first = 0;
cout << " ";
}else cout << ", ";
cout << cards[0];
cards.erase(cards.begin());
cards.push_back(cards[0]);
cards.erase(cards.begin());
}
cout << endl;
cout << "Remaining card: " << cards[0] << endl;
cards.clear();
}
return 0;
}
上面是用不定长数组做的。下面稍微一改是队列写的:
<pre name="code" class="cpp">#include<iostream>
#include<queue>
using namespace std;
queue<int> cards;
int n;
int main()
{
while( cin >> n && n ){
for(int i = 1; i <= n ; i++)
cards.push(i);
cout << "Discarded cards:";
int first = 1;
while( !cards.empty() ){
if( cards.size() == 1) break;
if(first) { first = 0; cout << " "; }
else cout << ", ";
cout << cards.front();
cards.pop();
cards.push(cards.front());
cards.pop();
}
cout << endl << "Remaining card: " << cards.front() << endl;
while( !cards.empty() ){
cards.pop();
}
}
return 0;
}