题目如下:
矩阵中填数. 当给出 N*N 的矩阵,要求用程序填入下列形式的数:
① 倒填,例如N=5 ② 蛇形填数 ③ 回转填数
┌—┬—┬—┬—┬—┐ ┌—┬—┬—┬—┬—┐ ┌—┬—┬—┬—┬—┐
│25│24│23│22│21│ │ 1│ 3│ 4│10│11│ │ 1│16│15│14│13│
├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤
│20│19│18│17│16│ │ 2│ 5│ 9│12│19│ │ 2│17│24│23│12│
├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤
│15│14│13│12│11│ │ 6│ 8│13│18│20│ │ 3│18│25│22│11│
├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤
│10│ 9│ 8│ 7│ 6│ │ 7│14│17│21│24│ │ 4│19│20│21│10│
├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤ ├—┼—┼—┼—┼—┤
│ 5│ 4│ 3│ 2│ 1│ │15│16│22│23│25│ │ 5│ 6│ 7│ 8│ 9│
└—┴—┴—┴—┴—┘ └—┴—┴—┴—┴—┘ └—┴—┴—┴—┴—┘
解答已经知道,但看不那么懂,哪位高手帮忙写一下解答的程序运行说明和流程图或算法。
#define NUM 5
main()
{int i,j,k=1,m,mi,mj,a[NUM][NUM],ind[4]={NUM-1,NUM-1,0,1};
clrscr();
for(i=0;i<NUM;i++)
for(j=0;j<NUM;j++)
{a[i][j]=k;k++;}
/* back*/
printf("back:\n");
for(i=NUM-1;i>=0;i--)
for(j=NUM-1;j>=0;j--)
{printf("%4d",a[i][j]);
if(j==0) printf("\n");
}
printf("\n");
/* snake */
printf("snake:\n");
k=1;
for(m=0;m<=(NUM-1)*(NUM-1);m++)
for(i=0;i<NUM;i++)
for(j=0;j<NUM;j++)
{if((i+j)==m)
{if(m%2==0)
{a[i][j]=k;k=k+1;}
else
{a[j][i]=k;k=k+1;}
}
}
for(i=0;i<NUM;i++)
for(j=0;j<NUM;j++)
{printf("%4d",a[i][j]);
if(j==NUM-1) printf("\n");}
printf("\n");
/*cycle*/
printf("cycle:\n");
k=1;i=0;j=0;
while(ind[0]>=ind[2])
{while(i<=ind[0])
{a[i][j]=k;i++;k++;}
ind[0]--;i--;j++;
while(j<=ind[1])
{a[i][j]=k;j++;k++;}
ind[1]--;j--;i--;
while(i>=ind[2])
{a[i][j]=k;i--;k++;}
ind[2]++;i++;j--;
while(j>=ind[3])
{a[i][j]=k;j--;k++;}
ind[3]++;j++;i++;}
for(i=0;i<NUM;i++)
for(j=0;j<NUM;j++)
{printf("%4d",a[i][j]);
if(j==NUM-1) printf("\n");}
printf("\n");
getch();
}
急!!!!
请哪位高手帮小女子写一下了
小女子先谢谢了!!!!!!!!!
要是帮忙写下算法就好了,谢谢个位的回答。我现在明白了,但老师叫我写什么算法,我想了半天也不知道怎么动笔,什么是算法 ,晕
5555555---