public class Mabangjin
{
public static void main(String args[])
{
//배열을 6으로 만드세요
//님이 사용한 로직은 5를 사용했는데
//그러면 0,1,2,3,4 이런식으로 첨자가 사용 되어야합니다.
//하지만 이 프로그램에서는 5까지 사용하니 6으로 해야
//에러가 발생하지 않습니다.
//의문점 쪽지 주세요
int a[][] = new int[6][6];
int i=1;
int j=(5/2)+1;
for(int k=1;k<=25;k++)
{
System.out.println("i="+i+"j="+j);
a[i][j]=k;
if(k%5==0)
{
i=i+1;
}
else
{
i=i-1;
j=j+1;
}
if(i<1)
{
i=5;
}
else if(j>5)
{
j=1;
}
}
//여기도 수정 x y 값수정
for (int x = 1; x < 6; x++)
{
for (int y = 1; y< 6; y++)
{
//출력을 보기 좋게
System.out.printf("%3d",a[x][y]);
}
System.out.println();
}
}
}
//문]
//a[i][j]=k;에서 배열의 범위를 벗어났다고하네요
//제가 봤을때는 이상없는것 같은데 ㅜ.ㅜ
//고수님들 좀 봐주세요 실행화면도 같이 해주시면 좋고요
//부탁드립니다 밑에는 소스입니다
아래는 다른 로직 마방진 프로그램입니다import java.util.*;
public class MagicSquare {
public static void main(String[] args) {
int n = 5; // 마방진의 크기 (홀수만 가능)
if (n % 2 == 0) {
System.out.println("마방진은 홀수 크기만 가능합니다.");
return;
}
int[][] magicSquare = generateMagicSquare(n);
printMagicSquare(magicSquare);
}
public static int[][] generateMagicSquare(int n) {
int[][] magicSquare = new int[n][n];
int row = 0; // 시작 위치: 첫 행의 가운데 열
int col = n / 2;
int num = 1;
while (num <= n * n) {
magicSquare[row][col] = num;// 위로 이동 (위로 나가면 아래로 이동)
int nextRow = (row - 1 + n) % n;
// 오른쪽으로 이동 (오른쪽으로 나가면 왼쪽으로 이동)int nextCol = (col + 1) % n;
// 이미 채워져 있으면 아래로 이동if (magicSquare[nextRow][nextCol] != 0) {
nextRow = (row + 1) % n;
nextCol = col;
}
row = nextRow;
col = nextCol;
num++;
}
return magicSquare;
}
public static void printMagicSquare(int[][] magicSquare) {
int n = magicSquare.length;
System.out.println("마방진 (" + n + "x" + n + "):");
for (int[] row : magicSquare) {
for (int num : row) {
System.out.printf("%4d", num);
}
System.out.println();
}
}
}
Output:
마방진 (5x5): 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
댓글 없음:
댓글 쓰기