結果
| 問題 |
No.217 魔方陣を作ろう
|
| コンテスト | |
| ユーザー |
fmhr
|
| 提出日時 | 2015-05-27 06:38:57 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,549 bytes |
| コンパイル時間 | 11,667 ms |
| コンパイル使用メモリ | 236,380 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-10 18:47:05 |
| 合計ジャッジ時間 | 11,302 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 14 WA * 4 |
ソースコード
package main
import (
"fmt"
)
func odd(N int, z [][]int) [][]int{
row := 0
col := N / 2
for i := 0; i < N*N; i++ {
z[row][col] = i + 1
nrow := (row + N - 1) % N
ncol := (col + 1) % N
if z[nrow][ncol] != 0 {
nrow = (row + 1) % N
ncol = col
}
row = nrow
col = ncol
}
return z
}
func print(z [][]int){
for i := range z {
for j:= range z[i] {
fmt.Print(z[i][j], " ")
}
fmt.Println("")
}
}
func main() {
var N int
fmt.Scan(&N)
z := make([][]int, N)
for i := 0; i < N; i++ {
z[i] = make([]int, N)
}
if N%2 == 1 {
z = odd(N, z)
} else if N%4 == 0 {
for i := 0; i < N; i++ {
for j := 0; j < N; j++ {
if (i%4==j%4 || i%4+j%4==3) {
z[i][j] = N*i+j+1
} else {
z[i][j] = N*N-(N*i+j)
}
}
}
} else{
n := (N-2)/4
seed := make([][]int, 2*n+1) //+1
for i:= range seed{
seed[i] = make([]int, 2*n+1)
}
seed = odd(2*n+1, seed)
LUX := make([][]int, 2*n+1+1) //+1
for i:= range LUX{
LUX[i] = make([]int, 2*n+1)
}
//print(LUX)
for i:=0; i<N/2; i++{
LUX[N/2-1][i] = 1
}
for i:=N/4; i<N/2; i++{
for j:=0; j<N/2; j++{
LUX[i][j] = 2
}
}
LUX[N/4][N/4] = 1
LUX[1 + N/4][N/4] = 0
L := [2][2]int{{4,1},{2,3}}
U := [2][2]int{{1,4},{2,3}}
X := [2][2]int{{1,4},{3,2}}
LUXmat := [3][2][2]int{L,U,X}
for x:=0; x<N/2; x++{
for y:=0; y<N/2; y++{
val := (seed[x][y] - 1) * 4
idx := LUX[x][y]
for a:=0;a<2;a++{
for b:=0;b<2;b++{
z[2 * x + a][2 * y + b] = LUXmat[idx][a][b] + val
}
}
}
}
}
print(z)
}
fmhr