마방진 알로리즘을 설명하자면
1) 첫 행, 중간 열에 1을 집어 넣습니다. 예컨데 5x5행렬에서 1행 3열에 1을 집어넣습니다.
2) 그 다음 한 칸 위, 좌로 다음 수 2(n)을 집어 넣으며 이 단계를 반복합니다.
3) 2번 단계를 반복할 때, 만약 그 자리에 숫자가 저장되어 있다면 자리를 차지한 바로 밑 행열에 수를 저장합니다.
요런 알고리즘이 정의되어있을 때
void formula(int number)
{
int x=0, y;
// 행을 담당한 변수 x, 열을 담당한 변수 y를 정의합니다
// 이때 x는 0으로 초기화하여 1행에서 시작됩니다.
y=number/2;
// 1행 중간열을 정의하기위해, y의 (number/2)로 정의합니다.
for(int i=1;i<=number*number;i++) // i는 1에서 행렬의 갯수 nub*nub까지 반복합니다.
{
box[x][y]=i; // 1~x행,1~y열에 1~nub*nub를 대입합니다.
if(i%number==0)
{
x=x+1;
}
else
{
x=x-1;
y=y+1;
}
if(x<0)
{
x=number-1;
}
if(y>number-1)
{
y=0;
}
}
}
혼자선 도저히 코딩이 안되서
안되서 인터넷에 널린 코드를 보면서햇는데도
이해르 못하고...
안되겠다 싶어서 저가 직접 주석 달았는데...
문제는 조건식....
if(i%number==0)
이게 핵심 코드인데...
i를 nub로 나눠 나눈 나머지가 0일 때...
행이 증가하는 건데..
요게 무슨 뜻인지 이해를 못하겠네요...
요거 좀 쉽게 풀이해주시면 안될까요...