作者evenif1001 (evenif)
看板java
標題[問題] 奇數魔方陣
時間Thu Aug 11 20:31:54 2011
奇數魔方陣就是一個方陣中每行、每列 & 對角線的和都相等。
Ex:3X3 的方陣
8 1 6
3 5 7
4 9 2
我打的 Code 跑不出正確的結果 ...
有請板上高手指點到底是哪裡出了問題 (跪)
(我的 Code:)
================================================
import java.util.Scanner;
public class Exercise1{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入階數 : ");
int layer = scanner.nextInt();
int[][] magic = new int[layer][layer];
int r = 0;
int l = ((layer-1)/2);
for(int i = 1; i <= (layer*layer); i++){
magic[r][l] = i;
r = ((r+layer-1)%layer);
l = ((l+1)%layer);
if(magic[r][l] != 0){
r = (r+layer-1)%layer;
l = (l+layer-1)%layer;
}
}
for(int i = 0; i < arr.length; i++)
for(int j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
============================================================
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.172.4.121
→ pico2k:請先用紙和筆,跑一次你的演算法,好嗎? 08/11 20:51
推 LaPass: if(magic[r][l] != 0) 後面兩行有縮排卻沒大括 刻意或漏? 08/11 21:03
→ evenif1001:漏了,加上去後還是出不來,在發文前已在紙上算過了 08/11 21:29
※ 編輯: evenif1001 來自: 218.172.4.121 (08/11 21:30)
推 lachtchlee:i <= layer;//我沒詳細看 ?? 08/11 21:46
推 LaPass:演算法沒錯 程式碼打錯而已 08/11 22:14
推 LaPass:你這演算法好神奇喔,到底是怎麼推出來的啊? 08/11 23:41
→ evenif1001:竟然是那裏打錯 >//////< 謝謝L大修正!!! 08/12 14:58
→ evenif1001:因為第一個想到的就是用餘數解,然後慢慢敲出來的 08/12 15:01