概述
《C语言程序设计现代方法》第八章数组 编程题17
打印出n*n的奇数方正,元素数字依次递增,排序方式要求每行每列和两条大斜线的和相同。
#include <stdio.h>
int i, j, k, l, juge;
int arr[15][15];
int m,n;
int checkMove(void);
void showSqaure(void);
int main (void)
{
scanf("%d",&i);
//i = 5;
k = 0 ;
l = 2 ;
j = 0 ;
juge = -1;
for (m = 0; m < i; m++){
for (n = 0; n < i; n++)
arr[m][n] = 0;
}
checkMove();
showSqaure();
return 0;
}
int checkMove()
{
//check & traceback
if (k < 0)
k = k + i;
else if (k >= i)
k = k - i;
else if (l < 0)
l = l + i;
else if (l >= i)
l = l - i;
else if (arr[k][l] != 0) {
k += 2;
l -= 1;
}else
juge += 1;
//move
if ( j == juge ){
j++;
if(j < i*i) {
arr [k][l] = j;
k--;
l++;
checkMove();
}else if (j = i*i){
arr [k][l] = j;
return 0;
}
}else if ( j != juge )
checkMove();
}
void showSqaure()
{
for (m = 0; m < i; m++){
for (n = 0; n < i; n++)
printf("%2d ", arr[m][n]);
putchar('n');
}
}
最后
以上就是香蕉铃铛为你收集整理的奇数幻方 magic square的全部内容,希望文章能够帮你解决奇数幻方 magic square所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复