Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1003-c4bfa1d5
この記事にトラックバックする(FC2ブログユーザー)

SRM249 DIV2 MEDIUM - FieldPairParse (この記事を編集する[管理者用])

Source

TopCoder SRM249 DIV2 MEDIUM (500pt)
Problem Statement

問題概要

表で中身のみ書かれている.
横の要素数は2の倍数として,最も太い枠として縦線を引きたい.
各線の太さは異なっていても良いので,枠の太さの求める問題.

解法

連続する空白を数えるだけ.

C++によるスパゲッティなソースコード
// #includeとusing namespace std;は略

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

class FieldPairParse {
public:
vector <int> getPairs(vector <string> data) {
  int i,j,k;
  int nul[60];
  vector <int> res;

  rep(i,data[0].size()){
    nul[i]=0;
    rep(j,data.size()) if(data[j][i]=='X') nul[i]=1;
  }
  nul[data[0].size()]=1;

  k=0;
  rep(i,data[0].size()+1){
    if(nul[i]==0) k++;
    else if(k){
      res.push_back(k); k=0;
    }
  }

  if(res.size()%2==0) res.clear();
  return res;
}

};

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1003-c4bfa1d5
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。