求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时:1011

求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;
}