算法练习--卡片游戏

桌上有一叠牌,从第一张牌(即位于顶面的牌)開始从上往下依次编号为1-n。

进行下面操作:把第一张牌扔掉,然后把心得第一张放到整叠牌的最后。

输入N,输出每次扔掉的牌,以及最后剩下的牌。

比如 输入 7
输出 1357426

实现:

function f(n){
var arr = new Array();
for(var i = 0;i < n; i++){arr.push(i+1);}

var ret = new Array();

for(;arr.length > 1;){
var toThrow = arr[0];
arr.splice(0,1);
ret.push(toThrow);

var toLast = arr[0];
arr.splice(0,1);
arr.splice(arr.length,1,toLast);

}
ret.push(arr[0]);

return ret;
}

console.log(f(7));
时间: 2024-08-03 22:08:20

算法练习--卡片游戏的相关文章

排序算法的体验游戏

今天监考排座位时出现了一些混乱. 我要求他们按顺序每列N人坐好.若学号是连续的,1到N号第1列,N+1到2N号第2列,这个好说.乱就乱在,参加考试的同学的学号不连续,中间有断号.规则说来简单,若2号.3号空缺,4号需要直接坐在1号后面. 由于手头没有名单,这对于每位同学而言,确实困难,35号必须要看到前面紧临的31号坐定才能确定自己的位置.这是一个必须顺序完成的任务.一时间,学生们陷入相互等待,在教室后面缩成一堆,谁也不动.最后,我和班干部采用了逐个叫号的方式才将坐位排定. 坐定之后,我对同学们

【sicily】卡片游戏

卡片游戏  Time Limit: 1sec    Memory Limit:32MB Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. Input 第一行为一个整数t(0<t<40),表示测试用例个数.以下t行每行包含一个整数n(0<n<40),为一个测试用例的牌数. Output 为每个测试用例单独输出一行

NYOJ 905 卡片游戏

卡片游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小明最近宅在家里无聊,于是他发明了一种有趣的游戏,游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字的范围是0~9,游戏规则如下: 首先取最上方的卡片放到桌子上,然后每次取最上方的卡片,放到桌子上已有卡片序列的最右边或者最左边.当N张卡片全部都放到桌子上后,桌子上的N张卡片构成了一个数.这个数不能有前导0,也就是说最左边的卡片上的数字不能是0.游戏的目标是使这个数最小. 现在你的任务是帮小明写段程序,

Sicily 1931. 卡片游戏

题目地址:1931. 卡片游戏 思路: 纯属数据结构中队列的应用,可以练练手. 具体代码如下: 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 5 int main() { 6 int t; 7 cin >> t; 8 while (t--) { 9 int num; 10 cin >> num; 11 queue<int> store; 12 for (int

测试4T2 卡片游戏

问题 E: 卡片游戏 时间限制: 1 Sec  内存限制: 128 MB提交: 42  解决: 18[提交][状态][讨论版] 题目描述 小D举办了元旦联欢活动,其中有一个卡片游戏. 游戏的规则是这样的:有n张卡片,每张卡片上正面写着一个小于等于100的正整数ai,反面都是一样的花色.这n张卡片正面朝下叠成一堆,玩这个游戏的人从中可以抽出连续的k(1≤k≤n)张卡片.如果对于这k张卡片上的数字的平均值a,满足l<=a<=r,那他就可以获得小礼物一件. 小W来玩这个游戏了,她事先通过某些途径知道

1704 卡片游戏

1704 卡片游戏  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 桌面上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张排时进行一下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后.输入n.输出每次扔掉的牌,以及最后剩下的牌.. 输入描述 Input Description 输入n 输出描述 Output Description 输出每次扔掉的牌,以及最后剩下的牌 样例输入 Sa

卡片游戏 (关于队列)

一.原题 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. 样例输入:7 样例输出:1 3 5 7 4 2 6 二.题目源代码 #include<cstdio> #include<queue> using namespace std; queue<int> q; int main() { int n; scanf(&quo

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

 1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2d.h" USING_NS_CC; classCardItem :publicCCSprite { public: staticCardItem *create(intidx); boolinit(intidx); CCLabelTTF *ttf; CCSprite *bg; CC_SYNTHESI

卡片游戏(队列)

#include<iostream> #include<queue> using namespace std; queue<int>q; int main() { int n; cin>>n; for(int i=1;i<=n;i++) q.push(i); while(!q.empty()) { cout<<q.front()<<' '; q.pop(); if(!q.empty()) { q.push(q.front());