Hatena::Grouptopcoder

chokudaiの日記

 | 

2010-11-07

SRM 385 Div1 Easy UnderscoreJustification

13:41 | SRM 385 Div1 Easy UnderscoreJustification - chokudaiの日記 を含むブックマーク はてなブックマーク - SRM 385 Div1 Easy UnderscoreJustification - chokudaiの日記 SRM 385 Div1 Easy UnderscoreJustification - chokudaiの日記 のブックマークコメント

問題

  • 文字列を構成する単語の集合
  • 最終的に作りたい文字列の長さ

が与えられる。間に均一にスペースを入れる時(差が1以下ならどういう入れ方でもおk)、辞書順最小なものを作りなさい

方針

  1. まず共通で入れるべきスペースの数を入れる
  2. 前の方から、次の文字が大文字なところの前に入れる
  3. 後ろの方から、次の文字が小文字なところの前に入れる

おわり

ソースコード

    public string justifyLine(string[] words, int width)
    {
        int i, len = words.Length - 1;
        for (i = 0; i < words.Length; i++) width -= words[i].Length;
        int[] ar = new int[len];
        for (i = 0; i < len; i++) ar[i] = width / len;
        width -= width / len * len;
        for (i = 0; i < len && width != 0; i++)
        {
            if (words[i + 1][0].CompareTo('_') >= 0)
            {
                width--;
                ar[i]++;
            }
        }
        for (i = len-1; i >= 0 && width != 0; i--)
        {
            if (words[i + 1][0].CompareTo('_') < 0)
            {
                width--;
                ar[i]++;
            }
        }
        string result = "";
        for (i = 0; i < len; i++)
        {
            result += words[i];
            for (int j = 0; j < ar[i]; j++) result += "_";
        }
        return result + words[len];
    }

AnitaAnita2012/07/10 07:13Got it! Thanks a lot again for helnpig me out!

cqjqcowuqqmcqjqcowuqqm2012/07/10 16:35hkDpK5 <a href="http://xgrkysedhwcl.com/">xgrkysedhwcl</a>

maubcamaubca2012/07/12 12:47mCIKTN <a href="http://pibfomngcqgb.com/">pibfomngcqgb</a>

 |