两个一个队列的,一个数组,我认为用队列比较简单
#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;
}
本文探讨了使用队列和数组解决卡片问题的方法,对比了两种数据结构的实现方式,展示了如何通过循环操作从队列或数组中移除元素并保持问题的连续性。
448

被折叠的 条评论
为什么被折叠?



