[Arrays]D. Liang 6.28 紙牌遊戲

Description

桌子上有一疊牌,從第一張牌(即位於頂面的牌)開始從上往下依次編號爲1~n。當至少剩下兩張牌時進行以下操作:把第一張牌扔掉,然後把新的第一張牌放到整疊牌的最後。輸入n,輸出每次扔掉的牌,以及最後剩下的牌。

Input

第一行爲一個整數t(0<t<20),表示測試用例個數。以下t行每行包含一個整數n(0<n<40),爲一個測試用例的牌數。
如:
1
7

Output

爲每個測試用例單獨輸出一行,該行中依次輸出每次擲出的牌的編號以及最後剩下牌的編號,每個牌編號後跟着一個空格。
如:
1 3 5 7 4 2 6(空格)

//   Date:2020/5/1
//   Author:xiezhg5
#include <stdio.h>
int main(void) {
	int i, t,n, front, behind;    //定義前驅和後繼 
	int zhipai[40];
	scanf("%d",&t);
	while(t--) {
		scanf("%d", &n);
		for(i = 0; i < n; i++)
			zhipai[i] = i+1;        //初始化數組 
		front = 0;                //首元素的位置
		behind  = n;                //尾元素的後一個位置
		while(front < behind) {      //當數組非空
			printf("%d ", zhipai[front++]);    //輸出並拋棄隊首元素
			zhipai[behind++] = zhipai[front++];    //隊首元素轉移到隊尾(類似雙向鏈表) 
		}
		printf("\n");
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章