本文主要是介绍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
- 第一行是一个数T,表示有T组测试数据;
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int main()
{int n,l,i,j,k;char min,a[105],b[105];scanf("%d",&n);while(n--){min='9'+1;scanf("%s",a);l=strlen(a);for(i=l-1;i>=0;i--)if(a[i]<min && a[i]!='0')k=i,min=a[i];b[0]=a[0];for(i=1;i<k;i++){if(a[i]<=b[0]){for(j=i;j>0;j--)b[j]=b[j-1];b[0]=a[i];}elseb[i]=a[i];}printf("%c",min);for(i=0;i<k;i++)printf("%c",b[i]);for(i=k+1;i<l;i++)printf("%c",a[i]);printf("\n");}
}
这篇关于905 卡片游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!