게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
마방진 코드 짜는 데 더 이상 이해가 안되네요...
게시물ID : computer_126404짧은주소 복사하기
작성자 : AltTap
추천 : 1
조회수 : 656회
댓글수 : 8개
등록시간 : 2013/11/11 03:12:07
마방진 알로리즘을 설명하자면

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일 때...

행이 증가하는 건데..

요게 무슨 뜻인지 이해를 못하겠네요...

요거 좀 쉽게 풀이해주시면 안될까요...
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호