結果
問題 | No.401 数字の渦巻き |
ユーザー | bayashiko_r |
提出日時 | 2019-01-05 04:18:33 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 30 ms / 2,000 ms |
コード長 | 3,019 bytes |
コンパイル時間 | 901 ms |
コンパイル使用メモリ | 104,832 KB |
実行使用メモリ | 17,920 KB |
最終ジャッジ日時 | 2024-11-23 23:17:36 |
合計ジャッジ時間 | 2,959 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 26 ms
17,536 KB |
testcase_01 | AC | 26 ms
17,792 KB |
testcase_02 | AC | 26 ms
17,664 KB |
testcase_03 | AC | 26 ms
17,792 KB |
testcase_04 | AC | 26 ms
17,664 KB |
testcase_05 | AC | 26 ms
17,280 KB |
testcase_06 | AC | 25 ms
17,664 KB |
testcase_07 | AC | 25 ms
17,792 KB |
testcase_08 | AC | 26 ms
17,664 KB |
testcase_09 | AC | 25 ms
17,664 KB |
testcase_10 | AC | 26 ms
17,792 KB |
testcase_11 | AC | 26 ms
17,792 KB |
testcase_12 | AC | 26 ms
17,664 KB |
testcase_13 | AC | 26 ms
17,664 KB |
testcase_14 | AC | 27 ms
17,664 KB |
testcase_15 | AC | 27 ms
17,792 KB |
testcase_16 | AC | 26 ms
17,536 KB |
testcase_17 | AC | 29 ms
17,408 KB |
testcase_18 | AC | 27 ms
17,792 KB |
testcase_19 | AC | 27 ms
17,792 KB |
testcase_20 | AC | 28 ms
17,408 KB |
testcase_21 | AC | 27 ms
17,664 KB |
testcase_22 | AC | 28 ms
17,408 KB |
testcase_23 | AC | 28 ms
17,792 KB |
testcase_24 | AC | 27 ms
17,536 KB |
testcase_25 | AC | 29 ms
17,664 KB |
testcase_26 | AC | 29 ms
17,536 KB |
testcase_27 | AC | 29 ms
17,536 KB |
testcase_28 | AC | 30 ms
17,408 KB |
testcase_29 | AC | 30 ms
17,920 KB |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; class Program { static void Main(string[] args) { //入力 int N = int.Parse(Console.ReadLine()); //回答用の配列を用意 int[,] A = new int[N, N]; //すべての値を0にセットする for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { A[i, j] = 0; } } //まずは周辺を埋めていく for (int yoko = 0; yoko < N; yoko++) { A[0, yoko] = yoko + 1; A[N - 1, yoko] = 3 * N - 2 - yoko; } if (N >= 2) { for (int tate = 1; tate < N - 1; tate++) { A[tate, 0] = 4 * N - 3 - tate; A[tate, N - 1] = N + tate; } } if (N <= 2) { goto END; } A[1, 1] = 4 * N - 3; //埋めていくための数字 int let = 4 * N - 3; //一つずつ埋めていく(ここでiは、埋めていく順番の番号を表す) for (int i = 0; i < (N - 2) * (N - 2); i++) { for (int tate = 1; tate < N - 1; tate++) { for (int yoko = 1; yoko < N - 1; yoko++) { if (A[tate, yoko] == let) { //下にムーブ if (A[tate, yoko + 1] != 0 && A[tate - 1, yoko] != 0 && A[tate + 1, yoko] == 0) { A[tate + 1, yoko] = let + 1; let++; } else //左にムーブ if (A[tate, yoko + 1] != 0 && A[tate + 1, yoko] != 0 && A[tate, yoko - 1] == 0) { A[tate, yoko - 1] = let + 1; let++; } else //上にムーブ if (A[tate, yoko - 1] != 0 && A[tate + 1, yoko] != 0 && A[tate - 1, yoko] == 0) { A[tate - 1, yoko] = let + 1; let++; } else //右にムーブ if (A[tate, yoko - 1] != 0 && A[tate - 1, yoko] != 0 && A[tate, yoko + 1] == 0) { A[tate, yoko + 1] = let + 1; let++; } } if (let == N * N) { goto END; } } } } END: //出力 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (A[i, j].ToString().Length == 1) { Console.Write("00" + A[i, j] + " "); } else if (A[i, j].ToString().Length == 2) { Console.Write("0" + A[i, j] + " "); } else if (A[i, j].ToString().Length == 3) { Console.Write(A[i, j] + " "); } } Console.WriteLine(); } } }