题意:


卡片游戏

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 1088    Accepted Submission(s): 341

Problem Description

  小明最近宅在家里无聊,于是他发明了一种有趣的游戏,游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字的范围是0~9,游戏规则如下:

  首先取最上方的卡片放到桌子上,然后每次取最上方的卡片,放到桌子上已有卡片序列的最右边或者最左边。当N张卡片全部都放到桌子上后,桌子上的N张卡片构成了一个数。这个数不能有前导0,也就是说最左边的卡片上的数字不能是0。游戏的目标是使这个数最小。

  现在你的任务是帮小明写段程序,求出这个最小数。

 

Input

第一行是一个数T,表示有T组测试数据;

然后下面有T行, 每行是一个只含有0~9的字符串,表示N张叠在一起的卡片,最左边的数字表示最上方的卡片。

[Technical Specification]

T<=1000

1 <= N <= 100

Output

对于每组测试数据,请在一行内输出能得到的最小数。

 

Sample Input

3

565

9876543210

9876105432

 

Sample Output

556

1234567890

1678905432

思路:

      一开始太轻敌了,速度敲,速度wa,哎! 惭愧,首先思路是贪心,有一点我们肯定能想到,最高位的数字越小那么这个数就越小,首先我们考虑第一位,我们找到最小的并且最靠后的,然后最小的那个肯定是第一位,最小的后面的那些肯定是最靠后的,并且顺序不能改变,找到最小的可以理解,那为什么是最靠后的呢? 因为想下,靠后就说明他是后拿出来的,后拿出来的又是最小的肯定是最前面的那位,而如果他是最前面那位以后前面就不能在加数了,所以后面的就直接是最后面的,就这样,第一次我们找到了答案的第一个数字和最后面的一组数据,

注意一点第一个不能为0,第二步就找的是前面第二个数据和最后倒数第二组数据,第三步........找到最后就行了...


#include<stdio.h>
#include<string.h> #define N 500
#define INF 1000000000

int
num[N];
int
ans[N];
char
str[N]; int main ()
{
int
t ,l ,r ,n ,tt ,i;
scanf("%d" ,&t);
while(
t--)
{

scanf("%s" ,str);
n = strlen(str);
for(
i = 1 ;i <= n ;i ++)
num[i] = str[i- 1] - 48;
l = 0 ,r = n + 1;
tt = n;
while(
tt)
{
int
min_num = INF;
int
min_id = -1;
for(
i = tt ;i >= 1 ;i --)
{
if(
min_num > num[i])
{
if(
tt == n && !num[i]) continue;
min_num = num[i];
min_id = i;
}
}

ans[++l] = min_num;
for(
i = tt ;i > min_id ;i --)
ans[--r] = num[i];
tt = min_id - 1;
}
for(
i = 1 ;i <= n ;i ++)
printf("%d" ,ans[i]);
puts("");
}
return
0;
}

hdu4450 不错的贪心的更多相关文章

  1. timus1965(不错的贪心)

    题意是:给你一个1-n的排列,要你把这个排列分成两个序列,且这个两个序列都满足单调性. 题解: 1.首先假设找出的两个序列都是单调递增的(都是单调递减的同理) 那么很容易可以想到,将新加入的数放入到某 ...

  2. BZOJ4977: [[Lydsy1708月赛]跳伞求生(不错的贪心)

    4977: [[Lydsy1708月赛]跳伞求生 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 446  Solved: 142[Submit][Sta ...

  3. BZOJ3016: [Usaco2012 Nov]Clumsy Cows

    3016: [Usaco2012 Nov]Clumsy Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 71  Solved: 52[Submi ...

  4. The 16th Zhejiang provincial collegiate programming contest

    今天我挺有状态的,看过的题基本都给了正解(可能是昨晚cf div3打得跟屎一样,人品守恒,不好意思发题解了),自己也给队伍签了很多水题(不敢让队友写,怕出锅). 最后6题滚了,有点可惜.还差B和K没做 ...

  5. jzyz 题库 题目选做

    题库中也有很多我想不出来的模拟赛的题目.做还是必要的.做自己的题目 时间很紧 想想自己的文化课 我又没有那么强 我必须得刷. LINK:水题一道 发现是一道计数题 计数题拿高分的才是王者,但是 计数题 ...

  6. POJ3040给奶牛发工资

    题意:       有n种硬币,每种硬币有mi个,然后让你给奶牛发工资,每周发至少c元(就是不找零钱的意思)然后问你能发几周?(硬币之间都是倍数关系) 思路:       这个题目做了两天,丢脸,看完 ...

  7. [考试总结]noip模拟43

    这个题目出的还是很偷懒.... 第一题...第二题...第三题...四.... 好吧... 这几次考得都有些问题,似乎可能是有些疲惫,脑袋也是转不太动,考完总觉得自己是能力的问题,但是改一分钟之后会发 ...

  8. SPOJ:Decreasing Number of Visible Box(不错的,背包?贪心?)

    Shadowman loves to collect box but his roommates woogieman and itman don't like box and so shadowman ...

  9. SPOJ:Strange Waca(不错的搜索&贪心&剪枝)

    Waca loves maths,.. a lot. He always think that 1 is an unique number. After playing in hours, Waca ...

随机推荐

  1. OpenGL中的坐标系统详细概括:包括Z缓冲

    一: 首先就是关于几个坐标系统的概括: 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标. 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的.这些坐标相对于世界的全局 ...

  2. codefoces B - Phoenix and Beauty

    原题链接:https://codeforc.es/problemset/problem/1348/B 题意:告诉我们一个数组及其长度和k,判断是否可以构造一个新数组使得每K段长度和都相等. 思路:首先 ...

  3. ARFoundation - 实现物体旋转, 平移,缩放

    ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...

  4. Mybatis底层源码执行流程

    1.通过类加载器,加载了config.xml文件 2.通过SqlSessionFactoryBuilder.build(resource)这个方法进行了config.xml的解析,解析为Configu ...

  5. 显示目录下的内容--ls

    ls               显示当前目录下的所有文件或者文件夹,但不包括 . 和 .. ls -a                  显示当前目录下的所有文件或者文件夹 ls -l        ...

  6. Math类的random()方法

    Math类的random()方法 Math类的random()方法可以生成大于等于0.0.小于1.0的double型随机数. Math.random()方法语句基础上处理可获得多种类型.或任意范围的随 ...

  7. B1029/A1048 旧键盘损坏了,在输入一段文字时坏了的键不可以正常使用,现给出应输入的一段文字,和实际输出的文字,找出坏掉的键。

    #include<cstdio> #include<cstring> const int maxn = 1000; bool HashTable[maxn] = { false ...

  8. Java(56-64)【IDEA】

    1.IDEA的使用 集成开发软件 eclipse IDEA 第一步:创建新的项目 第二步:空白的project 第三步:modules->java 写在src中 src->package- ...

  9. JFX11+IDEA跨平台打包发布的完美解决办法

    1 概述 IDEA2020.1的文档中提到只有JFX8的工程才支持打成jar包,并且,如果直接使用Build Artifacts的话,会如下提示: IDEA文档有提到这个的解决办法,是使用一些第三方工 ...

  10. vim与系统剪贴版的交互

    1 概述 vim中的复制,删除,替换(d,r,s,x,y等)的内容都会被保存到默认的未命名的寄存器中,之后可以通过p进行粘贴,但是,这个寄存器不是系统的剪贴版,很多时候需要vim与系统剪贴版的交互,那 ...