幻方吗?
那 num_out(3) 与 num_out(5) 都是奇数阶幻方,为什么使用的竟然不是同一种方法?
程序代码:char number[4][36]={{ 6, 1, 8, 7, 5, 3, 2, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 1, 2,15,16,12,14, 3, 5,13, 7,10, 4, 8,11, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{14, 9, 1,19,22,23,18, 2,16, 6,21,11,13,15, 5, 3,10,24, 8,20, 4,17,25, 7,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 1, 5,34,27,18,26, 7,32, 9,21,22,20,30, 2,31,16,15,17, 4,29, 6,24,25,23,36, 8,28,13,12,14,33,35, 3,10,19,11}};
void num_out(char num)
{
for(char i=0; i<num; i++)
{
for(char j=0; j<num; j++)
printf("%3d", number[num-3][i*num+j]);
printf("\n");
}
}
程序代码: #include <stdio.h>
#define N 5 //3, 5, 7, 9 行、列数
int main()
{
int a[N][N] = {0};
int count =1 ;
int row = 0, cul = N / 2;
while (count <= N*N)
{
a[row][cul] = count;
int i = row;
int j = cul;
if (i == 0)
{
i = N - 1;
}
else
{
i--;
}
j = (j +1) % N;
if (a[i][j]!=0||(row==0&&cul==N-1))
{
i = row + 1;
j = cul;
}
row = i;
cul = j;
count++;
}
for (int i =0 ; i < N; i++)
{
for (int j =0 ; j < N; j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
}
[此贴子已经被作者于2022-7-9 02:40编辑过]
程序代码:#include <iostream>
char number[8][8]={{ 1, 3,64,61,62, 4,63, 2},
{60,57, 5, 8, 7,59, 6,58},
{17,19,48,46,20,45,18,47},
{51,16,14,49,50,15,13,52},
{25,38,40,26,37,28,27,39},
{21,42,44,24,41,23,43,22},
{29,31,36,34,32,33,35,30},
{56,54, 9,12,11,53,55,10}};
void num_out()
{
for(char i=0; i<8; i++)
{
for(char j=0; j<8; j++)
printf("%3d", number[i][j]);
printf("\n");
}
}
int main()
{
num_out();
return 0;
}
[此贴子已经被作者于2022-7-9 01:07编辑过]