데이터 구조의 큐 브 프로그램
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);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.