有趣的扑克牌 (单向队列)

/*
有趣的扑克牌

【问题描述】

桌面有一叠牌,从第一张(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。

输入:一个整数n, 表示牌的数量。

输出:每次扔掉的牌的编号,以及最后剩下的牌的编号,每两个数字之间用一个空格隔开(3≤n≤100)。

【样例输入】 7

【样例输出】 1 3 5 7 4 2 6

*/
#include<iostream>
using namespace std;
int q[10001];
int font=0;
int rear=0;

int main(){
  int n;
  cin>>n;

  // 直接入队;
  for(int i=1;i<=n;i++){
  q[rear]=i;
  rear++;
  }

  // 在队列不为空的情况下,入队和出队;
  while(font<rear){
    cout<<q[font]<<" ";
    font++;
    q[rear]=q[font];
    font++;
    rear++;

    // cout<<"font="<<font<<";"<<"rear="<<rear<<endl;
  }
  return 0;
}

 

 

posted @   Hi,小董先生  阅读(383)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示