卡片游戏

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

[Technical Specification]
T<=1000
1 <= N <= 100

输出
对于每组测试数据,请在一行内输出能得到的最小数。
样例输入
3
565
9876543210
9876105432
样例输出
556
1234567890
1678905432
讲解:刚开始觉得还挺简答的,但是写着写着才发现,陷阱挺多的啊,于是乎就老是出错,气愤,后来修改了下,算是AC了;
具体代码如下:
 #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
void SOLVE(char *a, int len, int k)
{
char s[];
int st = , ed = , i, n;
s[] = a[];
for(n = ; n < len; n++)
{
if(n < k)
{
if(a[n] <= s[st])
s[--st] = a[n];
else
s[++ed] = a[n];
}
else
{
if(n == k)
s[--st] = a[n];
else //第一位就是最小的非零数字
n--;
break;
}
}//最小的找到以后,就只需要把后面的数直接放到后面就行了
for(i = n+; i < len; i++)
s[++ed] = a[i];
for(i = st; i <= ed; i++)
printf("%c",s[i]);
printf("\n");
}
int main()
{
int t, i, len, j;
char str[],str1[];
scanf("%d",&t);
getchar();
while(t--)
{
gets(str);
len = strlen(str);
strcpy(str1,str);
sort(str1,str1+len);
i = ;
while(str1[i] == '')
i++;
int p = i;
for(j = ; j < len; j++)
if(str[j] == str1[i])
p = j; //寻找最后一个最小的非零数字所在位置
SOLVE(str,len,p);
}
return ;
}

nyoj905 卡片游戏的更多相关文章

  1. 【sicily】卡片游戏

    卡片游戏  Time Limit: 1sec    Memory Limit:32MB Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌 ...

  2. Sicily 1931. 卡片游戏

    题目地址:1931. 卡片游戏 思路: 纯属数据结构中队列的应用,可以练练手. 具体代码如下: #include <iostream> #include <queue> usi ...

  3. 卡片游戏(hdu4550)贪心

    卡片游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  4. NYOJ 905 卡片游戏

    卡片游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描写叙述 小明近期宅在家里无聊.于是他发明了一种有趣的游戏.游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字 ...

  5. Java实现 LeetCode 822 翻转卡片游戏(暴力)

    822. 翻转卡片游戏 在桌子上有 N 张卡片,每张卡片的正面和背面都写着一个正数(正面与背面上的数有可能不一样). 我们可以先翻转任意张卡片,然后选择其中一张卡片. 如果选中的那张卡片背面的数字 X ...

  6. hdu 4550 卡片游戏 贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4550 题意:有n(n <= 100)个0~9之间的卡片,从左往右将卡片放到之前的卡片最左边或者最 ...

  7. [Swift]LeetCode822. 翻转卡片游戏 | Card Flipping Game

    On a table are N cards, with a positive integer printed on the front and back of each card (possibly ...

  8. [LeetCode] Card Flipping Game 翻卡片游戏

    On a table are N cards, with a positive integer printed on the front and back of each card (possibly ...

  9. 【XSY1591】卡片游戏 DP

    题目描述 有标有数字为\(1\)~\(9\)的卡片各\(a_1,a_2\cdots a_9\)张,还有标有乘号的卡片\(m\)张.从中取出\(n\)张按任意顺序排列,取出两个乘号相邻和乘法在边界上的非 ...

随机推荐

  1. U872-结算成本处理步骤及索引处理

    U872每月都须要做月结,对于制造企业来说,结算成本处理是不可缺少的一个处理环节,每次查询出来待暂估记录也比較多(我接触到的有3万左右),暂估时间一般要2-3小时左右,若调用的大表索引碎片多时,会须要 ...

  2. Swift高速入门之函数

    函数 看一个函数的样例: func addNumbers( let a:Int,let b:Int)->Int{ return a+b; } 实现两个数相加.函数必须以func开头,后面是函数名 ...

  3. margin赋值为负值的几种效果(负值像素,负值百分数)

    1.margin-top为负值像素 margin-top为负值像素,偏移值相对于自身,其后元素受影响,见如下代码: <!DOCTYPE html> <html lang=" ...

  4. HTTP basic 认证

    为了确保资源的非法访问,HTTP采用两种认证方式,一种为basic,另外一种为digest(摘要认证).basic是最基本也是最简单的一种认证方式.认证的过程大概可分为以下几个步骤:1. 用户请求受保 ...

  5. 在Ubuntu下设置默认编辑器

    在默认情况下,Ubuntu 系统会为用户预设程序.就拿文本编辑器来说吧,Ubuntu 预设的是 Nano,对某些朋友来说,使用 Vim 可能更得心应手些.那么如何更改这些预设的程序呢? 你可以使用 s ...

  6. hosts.allow hosts.deny

    简单控制访问ip,hosts.allow/hsots.deny  a simple access control language that is based on client (host name ...

  7. 待字闺中之快排单向链表;leetcode之Sort List

    题目来源.待字闺中.原创@陈利人 .欢迎大家继续关注微信公众账号"待字闺中" 分析:思路和数据的高速排序一样,都须要找到一个pivot元素.或者节点. 然后将数组或者单向链表划分为 ...

  8. jQuery+PHP动态显示(项目)实时时间和倒计时

    jQuery动态显示当前时间:    html代码:<div id="current_time"></div> setInterval()使用:setInt ...

  9. js实现new Date(),时间对象和时间戳操作

    1.js中实现时间date对象 var myDate = new Date();//获取系统当前时间,结果:Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 2.获 ...

  10. InteliJ Idea通过maven创建webapp

    facet是IDE给工程添加的属性,在使用maven时一定不能使用facet 一.创建maven项目,选定webapp作为archtype,这样就会自动生成webapp目录 如果没有给maven设置代 ...