本文主要是介绍纸牌问题(队列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【问题描述】
桌面有一叠牌,从第一张(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整贴牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌(3≤n ≤ 100)。
【样例输入】7
【样例输出】1 3 5 7 4 2 6
【过程分析】
(1)创建用于存储队列的数组,为对头队尾初始化
(2)创建队列,为队列初始化
(3)把队列的第一个元素输出,把第二个元素放入队尾,直到把队列中的数字都输出为止
#include<iostream>
using namespace std;
int main()
{int arr[100],front=0,rear=0,num;cin>>num;rear=num;for(int i=0;i<num;i++){arr[i]=i+1;}while(front<rear){cout<<arr[front++]<<" ";arr[rear++]=arr[front++];}return 0;
}
这篇关于纸牌问题(队列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!