데이터 구조의 큐 브 프로그램

7443 단어 데이터 구조
큐 브 구조 문제
하나의 큐 브 (magic square) 는 1 에서 n 제곱 의 정수 로 구 성 된 n * n 행렬 로 그 중에서 각 줄 과 주 대각선 의 숫자 를 합 친 것 이 모두 같다.n 이 홀수 일 때 Coxeter 법칙 은 큐 브 를 생 성 할 수 있 습 니 다. 1 을 첫 줄 의 가장 가운데 칸 에 넣 습 니 다.왼쪽 위로 이동 하고 숫자의 증가 순서에 따라 숫자 를 빈 칸 에 채 웁 니 다.큐 브 (즉 큐 브 경 계 를 넘 었 습 니 다) 를 옮 겼 다 면 큐 브 대 변 의 대응 곡 에 들 어 갑 니 다.계속 체크 를 작성 하 세 요.만약 한 칸 이 숫자 에 기입 되 었 다 면, 아래로 계속 기입 하 세 요.큐 브 프로그램 이 다 루 는 Coxeter 법칙 은 군 론 에 속한다.큐 브 프로그램 반복 쓰기:
/*    -  */
#include 
#include 
#define MAX_SIZE 15 /* maximum size of square */
void main(){
    /* construct a magic square, iteratively */
    static int square[MAX_SIZE][MAX_SIZE];
    int i, j, row, column; /* indices */
    int count; /* counter */
    int size;

    printf("Enter the size of square: ");
    scanf("%d", &size);
    /* check for input errors */
    if(size < 1 || size > MAX_SIZE + 1){
        fprintf(stderr, "Error! Size is out of range
"
); exit(1); } if(!(size % 2)){ fprintf(stderr, "Error! Size is even
"
); exit(1); } for(i = 0; i < size; i++) for(j = 0; j < size; j++) square[i][j] = 0; square[0][(size-1) / 2] = 1; /* middle of first row */ /* i and j are current position */ i = 0; j = (size-1) / 2; for(count = 2; count <= size*size; count++){ row } }

큐 브 프로그램 재 귀적 표기 법:
/*    -  */
#include 
#include 
#define MAX_SIZE 15 /* maximum size of square */

void checkInput(int size){
    /* check for input errors */
    if(size < 1 || size > MAX_SIZE + 1){
        fprintf(stderr, "Error! Size is out of range
"
); exit(1); } if(!(size % 2)){ fprintf(stderr, "Error! Size is even
"
); exit(1); } } void initSquare(int size, int sq[][MAX_SIZE]){ int i,j; for(i = 0; i < size; i++) for(j = 0; j < size; j++) sq[i][j] = 0; } void magicSquare(int i, int j, int n, int size, int sq[][MAX_SIZE]){ if(n == size*size){ sq[i][j] = n; } else{ sq[i][j] = n; i = (i-1 < 0) ? (size - 1):(i - 1); j = (j-1 < 0) ? (size - 1):(j - 1); if(sq[i][j]){ i = (i+2) % size; j = (j+1) % size; } magicSquare(i,j,n+1,size,sq); } } void output(int size, int sq[][MAX_SIZE]){ int i,j; printf(" Magic Square of size %d:

"
, size); for(i = 0; i < size; i++){ for(j = 0; j < size; j++) printf("%5d", sq[i][j]); printf("
"
); } printf("

"
); } void main(){ static int square[MAX_SIZE][MAX_SIZE]; int i, j; int size; printf("Enter the size of square: "); scanf("%d", &size); checkInput(size); /* init the magic square */ initSquare(size, square); i = 0; j = (size-1) / 2; magicSquare(i,j,1,size,square); /* output the magic square */ output(size, square); }

좋은 웹페이지 즐겨찾기