hdu 4550 卡片游戏

http://acm.hdu.edu.cn/showproblem.php?pid=4550

贪心

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <queue>
 4 #include <string>
 5 #include <iostream>
 6 #include <algorithm>
 7 #define maxn 200
 8 using namespace std;
 9
10 char str[200],s2[220];
11 int t;
12 string s1;
13
14 int main()
15 {
16     scanf("%d",&t);
17     while(t--)
18     {
19         scanf("%s",str);
20         s1=str[0];
21         int j=0;
22         char ch=‘9‘;
23         for(int i=0; i<(int)strlen(str); i++)
24         {
25             if(str[i]!=‘0‘&&str[i]<=ch)
26             {
27                 j=i;
28                 ch=str[i];
29             }
30         }
31         for(int i=1; i<(int)strlen(str); i++)
32         {
33             if(i==j) s1=str[i]+s1;
34             else if(i>j)
35             {
36                 s1+=str[i];
37             }
38             else if(i<j)
39             {
40                 if(str[i]<=s1[0])
41                 {
42                     s1=str[i]+s1;
43                 }
44                 else
45                 {
46                     s1+=str[i];
47                 }
48             }
49         }
50        cout<<s1<<endl;
51     }
52     return 0;
53 }

时间: 2024-08-06 16:06:37

hdu 4550 卡片游戏的相关文章

hdu 4550 卡片游戏 贪心

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4550 题意:有n(n <= 100)个0~9之间的卡片,从左往右将卡片放到之前的卡片最左边或者最右边:使得最后得到的数值最小,且无前导0: input: 4 0101 2342001 9876105432 9876543210 output: 1001 1002234 1678905432 1234567890 思路:如果没有0,则直接用双指针,模拟前后插入值即可:但是由于存在0,所以需要找出最小的

HDU ACM 4550 卡片游戏

分析:分为三部分处理,第一部分找到除0外最靠右的最小数字A作为第一位:第二部分是这个最小数字A前面的数字均按规则排列,也就是每取出一张大的放在第二部分的后面,小的放在第二部分的前面:第三部分就是这个最小数A后面的数字按原顺序放在最后即可:最终即可组出新的串. 例子:9876105432. 第一部分:1 第二部分:9876,处理后为6789 第三部分:05432 最后按照第一部分,第二部分,第三部分的顺序组出新串:1678905432既是最终结果. #include<iostream> usin

【sicily】卡片游戏

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

HDU 4550-卡片游戏-贪心-字符串

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

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