NYOJ 905 卡片游戏

卡片游戏

时间限制: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>
int main()
{
	char str[105],ch[110],s;
	int T,i,j,left,right;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s",str);
		s='9';
		for(i=0;str[i]!='\0';i++)
		{
			if((str[i]!='0')&&str[i]<=s)
			{
				s=str[i];
				j=i;
			}
		}
		left=53;
		right=52;
		ch[left]='9';
		for(i=0;str[i]!='\0';i++)
		{
			if(i>=j)
				break;
			if(str[i]<=ch[left])
			{
				left--;
				ch[left]=str[i];
			}
			else
			{
				right++;
				ch[right]=str[i];
			}
		}
		printf("%c",s);
		for(i=left;i<=right;i++)
			printf("%c",ch[i]);
		for(i=j+1;str[i]!='\0';i++)
			printf("%c",str[i]);
		printf("\n");
	}
	return 0;
}

NYOJ 905 卡片游戏,布布扣,bubuko.com

时间: 2024-12-21 10:11:47

NYOJ 905 卡片游戏的相关文章

NYOJ 832 合并游戏

合并游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 大家都知道Yougth除了热爱编程之外,他还有一个爱好就是喜欢玩.某天在河边玩耍的时候,他发现了一种神奇的石子,当把两个石子放在一起的时候,后一个石子会消失,而且会蹦出一定数量的金币,这可乐坏了Yougth,但是他想得到最多的金币,他该怎么做? 输入 首先一行,一个n(1<=n<=10),表示有n个石子.接下来n*n的一个矩阵,Aij表示第i个和第j个合并蹦出的金币值(小于10000,注意合并后j会消失).

【sicily】卡片游戏

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

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

NYOJ 614 纸牌游戏

纸牌游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 设2n张牌分别标记为1,2,-,n,n+l,-,2n,初始时这2n张牌按其标号从小到大排列. 经一次洗牌后,原来的排列顺序变成n+l,l,n+2,2,··,,2n,n. 即前n张牌被放到偶数位置2,4,·,·,2n,而后n张牌被放到奇数位置1,3,-,2n-l. 可以证明对于任何一个自然数n,经过若干次洗牌后可恢复初始状态. 编程任务:对于给定的n的值(n<=24000),编程计算最少经过多少次洗牌可恢复到初

测试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());