无尽战区2017强势英雄:怎样使用c语言编程

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 17:36:01
输入一个数如是3则输出,如果是4则输出
1 2 3
8 9 4 1 2 3 4
7 6 5 12 13 14 5
11 16 15 6
10 9 8 7

一圈一圈的赋值。

1 2 3 4
12 5
11 6
10 9 8 7
是第一圈,圈的起始下标是0,0 结束下标是 3,3

13 14
16 15
是第二圈,圈的起始下标是1,1(0+1,0+1),结束下标是2,2 (3-1,3-1)

一圈一圈赋值,N x M的一个矩阵总共需要(M+1)/2取整次循环(奇数和偶数情况不一样)

先确定第一圈的起始坐标和结束坐标
int BeginIndexX = 0,BeginIndexY = 0;
int EndIndexX = N,EndIndexY = M; (4x4的矩阵)
int num = 1; // 自增变量
for(int i=0;i<(M+1)/2;i++)
{
//赋值运算
....

// 进入下一圈
BeginIndexX++;BeginIndexY++;
EndIndexX--;EndIndexY--;
}
下来就是对每一圈数据的赋值了

每一圈需要四次循环来赋值
for(int j = BeginIndexX;j<EndIndexX;j++)// j=0;j<4
{
t[BeginIndexX][j] = num++;
}
// 相当于赋值了1 2 3 4

for(int j=BeginIndexY+1;j<EndIndexY;j++)//j=1;j<4
{
t[j][EndIndexY-1] = num++;
}
// 5
// 6
// 7

for(int j=EndIndexX-1;j>=BeginIndexX;j--)//j=3;j>=0
{
t[BeginIndexX][j] = num++;
}
//赋值了 10 9 8
for(int j=EndIndexY-1;j>=BeginIndexY-1;j--)//j=2;j>=1
{
t[j][BeginIndexY] = num++;
}
//12
//11
将上述四个循环放入大循环中就可以对当前圈赋值。

你这写的是什么,再写的详细点,清楚点