結果
問題 |
No.401 数字の渦巻き
|
ユーザー |
![]() |
提出日時 | 2016-08-20 20:46:54 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 32 ms / 2,000 ms |
コード長 | 1,324 bytes |
コンパイル時間 | 4,917 ms |
コンパイル使用メモリ | 107,008 KB |
実行使用メモリ | 19,200 KB |
最終ジャッジ日時 | 2024-11-07 21:37:56 |
合計ジャッジ時間 | 3,040 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 30 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.Linq; namespace No401{ public class Program{ public static void Main(string[] args){ var N = int.Parse(Console.ReadLine()); var res = new int[N, N].ToJaggedArray(); Func<int, int, bool> isInside = (tx, ty) => 0 <= tx && tx < N && 0 <= ty && ty < N; var dx = new[]{1, 0, -1, 0}; var dy = new[]{0, 1, 0, -1}; var d = 0; var x = 0; var y = 0; for(var i = 1; i <= N * N; i++){ res[y][x] = i; if(!isInside(x + dx[d], y + dy[d]) || res[y + dy[d]][x + dx[d]] != 0) d = (d + 1) % 4; x += dx[d]; y += dy[d]; } foreach(var r in res){ Console.WriteLine(string.Join(" ", r.Select(i => i.ToString("000")))); } } } public static class ExMethod{ public static T[][] ToJaggedArray<T>(this T[,] src){ var x = src.GetLength(1); var y = src.GetLength(0); var ret = new T[y][]; for(var i = 0; i < y; i++){ ret[i] = new T[x]; for(var j = 0; j < x; j++){ ret[i][j] = src[i, j]; } } return ret; } } }