• 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]!='';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]!='';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]!='';i++)
    			printf("%c",str[i]);
    		printf("
    ");
    	}
    	return 0;
    }

  • 相关阅读:
    顺序的分数 Ordered Fractions
    容易的网络游戏
    Linux常用命令大全(share)
    Linux和UNIX监控
    Linux命令汇总
    优秀员工的10个修养
    ibatis使用--SqlMapClient对象
    一个男人关心的东西 决定了他的层次
    Linux下vi命令大全
    Linux中图形界面和文本模式相互切换
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6817354.html
Copyright © 2020-2023  润新知