• [Google Codejam] Round 1A 2016


    [Problem Description]

    Problem

    On the game show The Last Word, the host begins a round by showing the contestant a string S of uppercase English letters. The contestant has a whiteboard which is initially blank. The host will then present the contestant with the letters of S, one by one, in the order in which they appear in S. When the host presents the first letter, the contestant writes it on the whiteboard; this counts as the first word in the game (even though it is only one letter long). After that, each time the host presents a letter, the contestant must write it at the beginning or the end of the word on the whiteboard before the host moves on to the next letter (or to the end of the game, if there are no more letters).

    For example, for S = CAB, after writing the word C on the whiteboard, the contestant could make one of the following four sets of choices:

    • put the A before C to form AC, then put the B before AC to form BAC
    • put the A before C to form AC, then put the B after AC to form ACB
    • put the A after C to form CA, then put the B before CA to form BCA
    • put the A after C to form CA, then put the B after CA to form CAB

    The word is called the last word when the contestant finishes writing all of the letters from S, under the given rules. The contestant wins the game if their last word is the last of an alphabetically sorted list of all of the possible last words that could have been produced. For the example above, the winning last word is CAB (which happens to be the same as the original word). For a game with S = JAM, the winning last word is MJA.

    You are the next contestant on this show, and the host has just showed you the string S. What's the winning last word that you should produce?

    Input

    The first line of the input gives the number of test cases, TT test cases follow. Each consists of one line with a string S.

    Output

    For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is the winning last word, as described in the statement.

    Limits

    1 ≤ T ≤ 100.

    Small dataset

    1 ≤ length of S ≤ 15.

    Large dataset

    1 ≤ length of S ≤ 1000.

    Sample


    Input 
     

    Output 
     
    7
    CAB
    JAM
    CODE
    ABAAB
    CABCBBABC
    ABCABCABC
    ZXCASDQWE
    
    
    Case #1: CAB
    Case #2: MJA
    Case #3: OCDE
    Case #4: BBAAA
    Case #5: CCCABBBAB
    Case #6: CCCBAABAB
    Case #7: ZXCASDQWE
    
    

     

     今天是google的codejam contest的roundB,之前练习一下,就做了这道题,很简单,但是真正比赛的题目还是没有做出来。真正的算法大神是真的牛啊。

    这道题就比较简单了。有点像二叉树嘛,由一个字符,每次插入到前面或后面就会生成两个字符串,由于最后需要字典序最大的,因此每次生成这两个字符串,我就保存最大的。

    void LastWord(ifstream& fin) {
    
        int num;
        fin >> num;
        ofstream fout("output.txt");
        for(int j=0;j<num;j++){
            string s1="";
            string s2="";
            string smax="";
            string s;
            fin >> s;
            for (int i = 0; i < s.length(); i++) {
                s1 = smax + s[i];
                s2 = s[i] + smax;
                smax = s1 > s2 ? s1 : s2;
            }
            fout << "Case #" << j+1 << ":" <<" "<<smax << endl;
        }
        return;
    }
  • 相关阅读:
    PDF 补丁丁 0.5.0.2713 发布(替换字库功能修正字符宽度问题)
    PDF 补丁丁 0.5.0.2691 发布(替换字库新增字符映射功能)
    PDF 补丁丁 0.5.0.2657 发布
    安装Windows 10后PDF补丁丁等程序界面变得模糊的解决办法
    《React+Redux前端开发实战》笔记1:不涉及React项目构建的Hello World案例
    React前端有钱途吗?《React+Redux前端开发实战》学起来
    《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程
    为什么使用React Native
    React Native移动开发实战-5-Android平台的调试技巧
    React Native移动开发实战-4-Android平台的适配原理
  • 原文地址:https://www.cnblogs.com/LUO77/p/5815626.html
Copyright © 2020-2023  润新知