3522 - 炉石秘籍

通过次数

0

提交次数

0

时间限制 : 2 秒 内存限制 : 256 MB

小明……不对,这次是小涛。和小明sala失败后,小涛深深的理解到了数学对于游戏,对于ACM,对于生命的重要性。于是他玩了一个很考验小学数学的游戏——《炉石传说》,90%情况下只需要计算十以内的加减法。

他最常做的事情就是计算场上怪物攻击力的和。他用了一套鱼人的卡组(别忘了小涛只是小学生),攻击力只有<span>1,2,3</span><span>三种,让计算变得更加简单。</span>

但是小涛有个毛病,他只能从小到大加不能从大到小加(学名:他只能进行非降序的运算)。比如计算<span>3+2+1</span><span>,他必须把顺序换一换变成</span><span>1+2+3</span><span>。计算</span><span>1+3+1+3+1</span><span>,他只能先转换成</span><span>1+1+1+3+3</span><span>才能够进行计算。</span>

现在给出一系列加法,你能否将这个加法式子转换成小涛能够看懂的顺序?

题目输入

第一行是组数T(保证1<T<50)。

每组数据包含一个字符串(字符串保证长度小于100),这个字符串只包含1,2,3和加号(1个数的话,也有可能没有加号),组成一个加法式子。

题目输出

在单独的一行中输出小涛可以计算的排序以后的式子。

输入/输出样例

输入格式

3
3+2+1
1+1+3+1+3
2

输出格式

1+2+3
1+1+1+3+3
2

C语言解答

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
	int t = 0;
	scanf("%d", &t);
	getchar();
	while(t--)
	{
		char s[100] = {0};
		gets(s);
		int one = 0;
		int two = 0;
		int three = 0;
		for(int i = 0; i <(int)strlen(s); i ++)
		{
			if(s[i] == '1')
				one ++;
			if(s[i] == '2')
				two ++;
			if(s[i] == '3')
				three ++;
		}
		char ss[100] = {0};
		
		for(int x = 0; x < one; x++)
			strcat(ss, "1+");
		for(int y = 0; y < two; y++)
			strcat(ss, "2+");
		for(int z = 0; z < three; z++)
			strcat(ss, "3+");
		
		ss[(int)strlen(s)] = 0;

		printf("%s\n", ss);
		
	}
	
	return 0;
}

C++解答

#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
#include <algorithm>
using namespace std;

int saver[200];

int main()
{

    int testcase;
//    ifstream cin;
//    ofstream cout;
//    cin.open("j.in");
//    cout.open("j.out");
    cin>>testcase;
    while(testcase--)
    {
            string tar,tmp;
    int count1=0,count2=0,count3=0;
           cin>>tar;
    memset(saver,0,sizeof(saver));
    for(int i=0;i<tar.length();i++)
    {
        if(tar[i]=='1')
            count1++;
        if(tar[i]=='2')
            count2++;
        if(tar[i]=='3')
            count3++;
    }
    int p=count1+count2+count3-1;
    int q=0;
    for(int i=0;i<count1;i++)
    {
        cout<<1;
        if(q!=p)
        {
            cout<<"+";
            q++;
        }

    }
    for(int j=0;j<count2;j++)
    {
        cout<<2;
            if(q!=p)
        {
            cout<<"+";
            q++;
        }
    }
    for(int k=0;k<count3;k++)
    {
        cout<<3;
        if(q!=p)
        {
            cout<<"+";
            q++;
        }

    }
    cout<<endl;

    }



    return 0;
}