zoukankan      html  css  js  c++  java
  • Rockethon 2014B. Word Folding

    B. Word Folding

    You will receive 5 points for solving this problem.

    Manao has invented a new operation on strings that is called folding. Each fold happens between a pair of consecutive letters and places the second part of the string above first part, running in the opposite direction and aligned to the position of the fold. Using this operation, Manao converts the string into a structure that has one more level than there were fold operations performed. See the following examples for clarity.

    We will denote the positions of folds with '|' characters. For example, the word "ABRACADABRA" written as "AB|RACA|DAB|RA" indicates that it has been folded three times: first, between the leftmost pair of 'B' and 'R' letters; second, between 'A' and 'D'; and third, between the rightmost pair of 'B' and 'R' letters. Here are several examples of folded strings:


    "ABCDEF|GHIJK" |  "A|BCDEFGHIJK" |  "AB|RACA|DAB|RA" |  "X|XXXXX|X|X|XXXXXX"
                   |                 |                   |       XXXXXX
        KJIHG      |   KJIHGFEDCB    |      AR           |       X
       ABCDEF      |            A    |     DAB           |       X
                   |                 |     ACAR          |       XXXXX
                   |                 |       AB          |           X

    One last example for "ABCD|EFGH|IJ|K":


     K
    IJ
    HGFE
    ABCD

    Manao noticed that each folded string can be viewed as several piles of letters. For instance, in the previous example, there are four piles, which can be read as "AHI", "BGJK", "CF", and "DE" from bottom to top. Manao wonders what is the highest pile of identical letters he can build using fold operations on a given word. Note that the pile should not contain gaps and should start at the bottom level. For example, in the rightmost of the four examples above, none of the piles would be considered valid since each of them has gaps, starts above the bottom level, or both.

    InputThe input will consist of one line containing a single string of n characters with 1 ≤ n ≤ 1000 and no spaces. All characters of the string will be uppercase letters.

    This problem doesn't have subproblems. You will get 5 points for the correct submission.

    OutputPrint a single integer — the size of the largest pile composed of identical characters that can be seen in a valid result of folding operations on the given string.

    Sample test(s)input

    ABRACADABRA

    output

    3

    input

    ABBBCBDB

    output

    3

    input

    AB

    output

    1

    NoteConsider the first example. Manao can create a pile of three 'A's using the folding "AB|RACAD|ABRA", which results in the following structure:


    ABRA
    DACAR
       AB

    In the second example, Manao can create a pile of three 'B's using the following folding: "AB|BB|CBDB".


    CBDB
    BB
    AB

    Another way for Manao to create a pile of three 'B's with "ABBBCBDB" is the following folding: "AB|B|BCBDB".


     BCBDB
     B
    AB

    In the third example, there are no folds performed and the string is just written in one line.

     题意:

    一段字符串可以多次折叠,问一列之中出现最多的字符

      BCBDB
      B
    AB

    这种折叠出现最多的就是B有三个

    思路:

    dp,状态转移方程dp['a']=max(之前相隔奇数位的dp['a'])+1;

    代码:

     1 #include<iostream>
     2 #include<string.h>
     3 #include<stdio.h>
     4 using namespace std;
     5 
     6 char a[1001];
     7 int dp[1001];
     8 
     9 int main()
    10 {
    11     int ans=1;
    12     while(cin>>a)
    13     {
    14         for(int i=0;i<strlen(a);i++)
    15         {
    16             dp[i]=1;
    17             for(int j=1;i-j>=0;j+=2)
    18             {
    19                 if(a[i]==a[i-j])
    20                 {
    21                     dp[i]=max(dp[i],dp[i-j]+1);
    22                 }
    23             }
    24             if(ans<dp[i])
    25                 ans=dp[i];
    26         }
    27         cout<<ans<<endl;
    28     }
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    Jenkins配置钉钉通知
    Jenkins 学习笔记
    2020年10月26日Britain suggests it may overturn parts of the EU withdrawal agreement
    【火爆抢答中】HarmonyOS有奖问答,更多惊喜等你来拿!
    三七互娱《斗罗大陆:魂师对决》上线,Network Kit助力玩家即刻畅玩
    运动健康南向设备接入服务传输数据解析举例
    华为商品管理系统批量更新商品时提示:请至少输入一组国家码和价格
    云空间服务,助力用户数据存储与协同
    Input组件无点击效果
    华为视频编辑服务(Video Editor Kit),助力开发者高效构建应用视频编辑能力
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/3552431.html
Copyright © 2011-2022 走看看