マトリョーシカ的日常

ワクワクばらまく明日のブログ。

ぼくらのアイランド計画(SRM 477 div2 level2)

はじめての二次元配列

http://instagram.com/p/XMngmYhBBL/

 TopCoder Statistics - Problem Statement

 topcoderで二次元配列を扱うのは初めてだ。初めてだったのでコードは他人のひとのものを拝借した。感謝。

 SRM 477 DIV2 - yowa の TopCoder 日記 - TopCoder部


 問題:守銭奴の国王は海岸をもっているやつから金をむしりとることにした。この国は蜂の巣のように六角形の土地で埋められている。土地には陸と海の二種類のみ。国全体の海岸線の長さを返せ。それが金の合計になるから。

 注意:タテが偶数番目の土地は右にシフトしている。 参考画像↓

 2010 7月 | 首の長いゾウと鼻の長いキリン

 

二次元配列をvectorで表現

 Topcoderでは二次元配列はとても重要だ。なぜいままでやってなかったのか僕は不思議でならない。

string a[ ] ={"..#.##",
        ".##.#.",
        "#.#..."};
    vector <string> b(a,a+(sizeof(a)/sizeof(a[0])));
  • stringをvectorで表す。sizeofを使うと中身が変わっても大丈夫。
cout <<" [y][x] y=2,x=1: "<< b[2][1]<<endl;
h=kingdom.size();
w=kingdom[0].size();
  • hは列、wは行。y,xの順に表示される。

 

 こんな感じで、二次元配列も少しずつ好きになりたい。