两个一个队列的,一个数组,我认为用队列比较简单
#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;
cout<<"Remaining card: "<<cards.front()<<endl;
while(!cards.empty())
cards.pop();
}
return 0;
}
#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.size() != 1){
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]<<"\n";
cards.clear();
}
return 0;
}