卡片游戏

时间限制: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. 网站中超链接方式直接添加QQ好友

    使用情景: 在图中点击图片,会弹出添加qq好友的窗口进行好友添加. 链接如下: tencent://AddContact/?fromId=45&fromSubId=1&subcmd=a ...

  2. C# 的Timer 在javascript中的实现--基于Typescript

    class Timer { //js 内置的timer对象 private _jsInnerTimerObj: any; private _enable: boolean; private _hand ...

  3. Oracle执行SQL报错ORA-00922

    问题描述: 对Oracle数据库执行序列化脚本出错,ora-00922 missing or invalid option  #无效的选项 问题解决: 对于set define off --这个是sq ...

  4. 在win7/8下搭建简易的无线平台

    资料:http://www.cnblogs.com/KeenLeung/p/3482073.html http://www.cnblogs.com/KeenLeung/p/3481998.html 其 ...

  5. MySQL主从同步的一个小问题解决

    由于历史遗留问题,我们的MySQL主从库的表结构不一致,主库的某个表tableA比从库表tableA少了一个字段. 当尝试在主库上更改表结构时,这行alter语句会随着binlog同步到从库,如果从库 ...

  6. Oracle 11g的Deferred Segment Creation

    本篇主要介绍Oracle 11g中推出的“延迟段创建”(Deferred Segment Creation)特性,以及当我们使用这种特性时,需要注意的问题. 1)Deferred Segment Cr ...

  7. view变化监听器ViewTreeObserver介绍

      A view tree observer is used to register listeners that canbe notified of global changes in the vi ...

  8. webDAV服务的开启以及客户端的上传、下载、删除、新建文件夾、列表的代码(C#)

    windows server 2003开启webDAV服务 1. 启动“IIS管理器”选择“WEB服务扩展”,选择“WEBDAV”的允许按钮启动WEBDAV功能 2.建立一个虚拟目录,对应到一个本地目 ...

  9. 进程间通信机制(管道、信号、共享内存/信号量/消息队列)、线程间通信机制(互斥锁、条件变量、posix匿名信号量)

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  10. slub分配器

    Linux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的.不可预测的,所以需要一种类似用 ...