作业帮 > 综合 > 作业

如何使用C# 语言实现螺旋加上蛇形的矩阵动态生成?当n=4时,矩阵如此

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/16 10:26:49
如何使用C# 语言实现螺旋加上蛇形的矩阵动态生成?当n=4时,矩阵如此
1 2 3 4
11 9 10 5
15 12 8 6
16 14 13 7
其中螺旋部分是1 2 3 4
9 10 5
8 6
7
蛇形部分是
11
15 12
16 14 13
大家注意这里,我的意思是用c# 语言实现螺旋加上蛇形矩阵的动态生成,就是一个矩阵中包含两个部分,当n=4时,
整个矩阵:
1 2 3 4
11 9 10 5
15 12 8 6
16 14 13 7
蛇形部分 11
15 12
16 14 13
螺旋部分1 2 3 4
9 10 5
8 6
7
哎,好久没弄算法了搞了挺久才算给弄出来了,未经优化代码如下:
int n = 4;
int t = n;
int max=n*n;
int row = 0, col = 0;
int m = (max - n) / 2 + n;//螺旋的最大值
int[,] result = new int[t,t];
bool flag = true;//对角标志
for (int i = 1; i = n - 2 ? n - 2 : col] == 0) {//斜向下对角
result[row,col] = i;
row++;
col++;
continue;
}
//斜向上对角
if (flag) {
col--;
}
flag = false;
row--;
col--;
if (col >= 0)
result[row,col] = i;
else {//到达最左边,折返
row = row + 2;
col++;
flag = true;
i--;
}
}
//输出结果
int r = 0;
String temp = " ";
for (int j = 0; j < t; j++) {
for (int k = 0; k < t; k++) {
temp = " ";
r = result[j,k];
if (r < 10)
temp += " ";
Console.Write(r + temp);
}
Console.WriteLine();
}
Console.WriteLine("按任意键退出");
Console.ReadLine();