【正经题解】发牌游戏
2025-07-11 17:57:33
发布于:浙江
11阅读
0回复
0点赞
这是一个队列的问题,我们可以利用队列的性质来完成发牌(出队)与将牌放进底部(出队后再入队)
首先我们要生成这一副牌:
void m(int k){
for(int i=1;i<=k;i++){
a.push(i);
}
}
然后写一个放牌的函数:
void slove(int p){
if(a.size()==0){
return ;
}
for(int i=1;i<=p;i++){
int n=a.front();
a.pop();
a.push(n);
}
}
整体即为(注意输出后要pop):
#include <bits/stdc++.h>
using namespace std;
queue<int> a;
void m(int k){
for(int i=1;i<=k;i++){
a.push(i);
}
}
void slove(int p){
if(a.size()==0){
return ;
}
for(int i=1;i<=p;i++){
int n=a.front();
a.pop();
a.push(n);
}
}
int main(){
int k,n,p;
cin >> k >> n >> p;
m(k);
for(int i=1;i<=k;i++){
cout << a.front()<<" ";
a.pop();
slove(p);
}return 0;
}
时间复杂度:
全部评论 2
d
2025-07-11 来自 浙江
0d
2025-07-11 来自 浙江
0
有帮助,赞一个