ルールがよくわからなくて、めちゃくちゃ時間かかった。
隣接ノードを探すんじゃなくて、離れていても右にあるノード、下にあるノードを探す。
それが分からずに「なんでやー、なんでやー」と頭抱えてた。
英語読めないのが悪いといえばそうなんだけどね。
using System; using System.Linq; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; /** * Don't let the machines win. You are humanity's last hope... **/ class Player { //見つからん場合 static string none = "-1 -1"; //横と高さのサイズ static int width; static int height; //マップ static bool[,] map; static void Main(string[] args) { //横縦サイズ取得 width = int.Parse(Console.ReadLine()); // the number of cells on the X axis height = int.Parse(Console.ReadLine()); // the number of cells on the Y axis //配列の確保 map = new bool[width, height]; //mapに状態を埋めていく for (int i = 0; i < height; i++) { string line = Console.ReadLine(); // width characters, each either 0 or . Console.Error.WriteLine(line); //ノートがあればtrue,なければfalse for(int x = 0; x < width; x++) { switch(line[x]) { case '0': map[x,i] = true; break; case '.': map[x,i] = false; break; } } } for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { //ノードがあれば右と下を調べて出力 if(map[x,y] == true) { string s = cod(x, y); string r = sr(x, y); string b = sb(x, y); Console.WriteLine(nodes(s,r,b)); } } } } //座標をまとめる public static string cod(int x, int y) { return string.Format("{0} {1}", x, y); } //出力形式へ整形 public static string nodes(string select, string right, string bottom) { return string.Format("{0} {1} {2}", select, right, bottom); } //右サーチ public static string sr(int sx, int sy) { for(int x = sx+1; x < width; x++) { if(map[x, sy] == true) return cod(x, sy); } return none; } //下サーチ public static string sb(int sx, int sy) { for(int y = sy+1; y < height; y++) { if(map[sx, y] == true) return cod(sx, y); } return none; } }
- 作者: Brett McLaughlin
- 出版社/メーカー: O'Reilly Media
- 発売日: 2011/07/13
- メディア: Kindle版
- この商品を含むブログ (1件) を見る