zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    备战考研算法笔记(四)快速排序
    VMware安装
    使用 Vagrant 打造跨平台开发环境
    类加载器,注解,动态代理
    IE兼容forEach/map/every/some等新方法
    不得不看的Java代码性能优化总结
    关于Oracle误操作--数据被Commit后的数据回退(闪回)
    JPA与Hibernate的关系
    Jenkins-GitHub-Gradle自动构建项目
    过滤器Filter
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6817354.html
Copyright © 2011-2022 走看看