NYOJ714 Card Trick 【队列模拟】
来源:互联网 发布:淘宝服装 编辑:程序博客网 时间:2024/05/01 15:38
Card Trick
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
The magician shuffles a small pack of cards, holds it face down and performs the following procedure:
- The top card is moved to the bottom of the pack. The new top card is dealt face up onto the table. It is the Ace of Spades.
- Two cards are moved one at a time from the top to the bottom. The next card is dealt face up onto the table. It is the Two of Spades.
- Three cards are moved one at a time…
- This goes on until the nth and last card turns out to be the n of Spades.
This impressive trick works if the magician knows how to arrange the cards beforehand (and knows how to give a false shuffle). Your program has to determine the initial order of the cards for a given number of cards, 1 ≤ n ≤ 13.
- 输入
- On the first line of the input is a single positive integer k, telling the number of test cases to follow. 1 ≤ k ≤ 10 Each case consists of one line containing the integer n. 1 ≤ n ≤ 13
- 输出
- For each test case, output a line with the correct permutation of the values 1 to n, space separated. The first number showing the top card of the pack, etc…
- 样例输入
2
4
5
- 样例输出
2 1 4 3
3 1 4 5 2
/* **题意是给定一个1到n的某种初始序列,然后将列首数放到序列的末尾(操作一次),将新的队首元素放到 **桌面,再将队首的两个数放到末尾(操作两次),新树放到桌面,以此类推。最终得到的数列是1到n的递 **增序列。求初始序列。 **这是一道模拟题,可以逆推:由于最终序列一定是1,2,3...n,所以最后一个摆在桌面上的数一定是n, **且n被“操作”了n次,倒数第二个被放到桌面的数一定是n-1且n-1一定和n一起被“操作”了n-1次,以此类推。 **可以倒着模拟,即先将最终数列放到数组里,再从第n个数开始模拟,即将第n个数向前“操作”n次,实际上 **位置没变,然后将第n-1个数加入到“操作”中且与第n个数一起向前“操作”n-1次,以此类推,最终得到的数 **列即是初始序列。 */#include <stdio.h>#include <string.h>int a[15];void move(int bot, int top, int n){while(n--){int t = a[top], tt;for(int i = bot; i <= top; ++i){tt = a[i];a[i] = t;t = tt;}}}int main(){int t, n, bot, top;scanf("%d", &t);while(t--){scanf("%d", &n);for(int i = 1; i <= n; ++i) a[i] = i;top = bot = n;for(int i = n; i >= 1; --i){move(bot, top, i % (top - bot + 1));--bot;}for(int i = 1; i <= n; ++i)printf("%d ", a[i]);printf("\n");}return 0;}
0 0
- NYOJ714 Card Trick 【队列模拟】
- NYOJ714-Card Trick
- nyoj714 Card Trick(第六届河南省程序设计大赛)
- E Card Trick(队列)
- POJ-3032 Card Trick【模拟】
- nyoj714Card Trick 【模拟】+【队列】
- POJ 3032 Card Trick(较好模拟题,双向队列deque)
- NYOJ 714 Card Trick(队列queue)
- SPOJ 1108. Card Trick 模拟题
- poj 2200 A Card Trick(模拟)
- Card Trick
- Card Trick
- 第六届acm河南省赛——Card Trick 模拟
- Card Trick pku 3032
- PKU3032 Card Trick
- poj 3032.Card Trick
- POJ3032 Card Trick
- NYOJ 714 Card Trick
- DTrace tricks and tips (1) - 打印当前系统时间
- POJ 2000(构造法模拟)
- Linux 防火墙开放特定端口 (iptables)
- 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制
- 如何成为伟大的程序员
- NYOJ714 Card Trick 【队列模拟】
- 阿里巴巴将为无数人变为千万富翁
- u-boot-2009.08在飞凌OK2440/FL2440上的移植(三)——让u-boot支持DM9000A
- centos直接yum安装nginx
- Kaldi在Linux下的安装和编译
- 用shutdown和close分别关闭套机字的区别
- 一门赚钱的生意方法,是如何变成的
- linux中统计字节数、字数、行数命令wc用法详解
- 基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍