求unit6 蛇形矩阵 编程c++背景 BackgroundUnit6 蛇形矩阵提示:1.模拟整个过程描述 Description 在n*n的方阵里填入1,2,3……,n*n,要求填成蛇形.例如n=4时: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4输入格式
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/28 07:58:25
求unit6 蛇形矩阵 编程c++背景 BackgroundUnit6 蛇形矩阵提示:1.模拟整个过程描述 Description 在n*n的方阵里填入1,2,3……,n*n,要求填成蛇形.例如n=4时: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4输入格式
求unit6 蛇形矩阵 编程c++
背景 Background
Unit6 蛇形矩阵
提示:
1.模拟整个过程
描述 Description
在n*n的方阵里填入1,2,3……,n*n,要求填成蛇形.例如n=4时:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入格式 InputFormat
一个整数n
输出格式 OutputFormat
共n行,每行n个数,表示整个蛇形矩阵
样例输入 SampleInput [复制数据]
4
样例输出 SampleOutput [复制数据]
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
求unit6 蛇形矩阵 编程c++背景 BackgroundUnit6 蛇形矩阵提示:1.模拟整个过程描述 Description 在n*n的方阵里填入1,2,3……,n*n,要求填成蛇形.例如n=4时: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4输入格式
void snake(int n)
{
int m[20][20];
int i, j;
int s = 1;
int dir = 0;
if (n <= 0 || n > 20) return;
memset(m, 0, sizeof(int)*20*20);
i = n-1;
j = 0;
while (s <= n*n)
{
m[i][j] = s;
switch (dir)
{
case 0: j++; if (j >= n || m[i][j]){j--; i--; dir = 1;}break;
case 1: i--; if (i < 0 || m[i][j]){j--; i++; dir = 2;}break;
case 2: j--; if (j < 0 || m[i][j]){j++; i++; dir = 3;}break;
case 3: i++; if (j >= n || m[i][j]){i--; j++; dir = 0;}break;
}
s++;
}
for (j = 0; j < n; j++){
for (i = 0; i < n; i++)
{
printf("%d\t", m[i][j]);
}
printf("\n");
}
}
int main()
{
snake(7);
return 0;
}