编写算法,将一维数组a[1:N*N]中的元素, 按蛇形方式存放在二维数组b[1:N][1:N]中, 即:
b[1][1] = a[1],
b[1][2] = a[2],b[2][1] = a[3],
b[3][1] = a[4],b[2][2] = a[5],b[1][3] = a[6],
......
a[1] a[2] a[6] a[7] ...
a[3] a[5] a[8] a[14] ...
a[4] a[9] a[13] ... ...
a[10] a[12] ... ... ...
a[11] ... ... ... ... ...
... ... ... ... ... ... ....
分析:将 a 的元素从 b 的左上角开始, 沿着与 b 的副对角线平行的各条对角线(特点: 行号 + 列号 = 常数), 按蛇形存放于 b 中. 用 tag = 0 表示从左下到右上赋值, tag = 1 表示从右上到左下赋值. 要分对角线以上的部分和以下部分进行处理.
#include<iostream>
#include<time.h>
#define N 10
#define ElemType char
using namespace std;
void Snake(ElemType a[N], ElemType b[N +