一个旋转矩阵问题同学给了我一个题目就是输入一个正整数n 比如n=4输出一个n*n的矩阵如下 1 2 3 412 13 1
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/14 23:21:01
一个旋转矩阵问题
同学给了我一个题目就是输入一个正整数n 比如n=4
输出一个n*n的矩阵如下
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
这个应该怎么写呢……
同学给了我一个题目就是输入一个正整数n 比如n=4
输出一个n*n的矩阵如下
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
这个应该怎么写呢……
递归写法,理论上有输入上限,不过一般也不会有那么大的输入
没有处理格式,没有处理输入,只写了算法...
class Program
{
private static void Fill(int[,] matrix,Direction direction,int start,
int rows,int cols,int rowOffset,int colOffset)
{
if (rows == 0 || cols == 0) return;
switch (direction)
{
case Direction.Left:
for (int n = cols; n > 0; )
matrix[rowOffset + rows - 1,colOffset + --n] = ++start;
Fill(matrix,Direction.Up,start,rows - 1,cols,rowOffset,colOffset);
break;
case Direction.Right:
for (int n = 0; n < cols; ++n)
matrix[rowOffset,colOffset + n] = ++start;
Fill(matrix,Direction.Down,start,rows - 1,cols,rowOffset + 1,colOffset);
break;
case Direction.Up:
for (int n = rows; n > 0; )
matrix[rowOffset + --n,colOffset] = ++start;
Fill(matrix,Direction.Right,start,rows,cols - 1,rowOffset,colOffset + 1);
break;
case Direction.Down:
for (int n = 0; n < rows; ++n)
matrix[rowOffset + n,colOffset + cols - 1] = ++start;
Fill(matrix,Direction.Left,start,rows,cols - 1,rowOffset,colOffset);
break;
}
}
enum Direction { Left,Right,Up,Down };
static void Main(string[] args)
{
int n = 4;
int[,] matrix = new int[n,n];
Fill(matrix,Direction.Right,0,4,4,0,0);
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
Console.Write(matrix[i,j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
没有处理格式,没有处理输入,只写了算法...
class Program
{
private static void Fill(int[,] matrix,Direction direction,int start,
int rows,int cols,int rowOffset,int colOffset)
{
if (rows == 0 || cols == 0) return;
switch (direction)
{
case Direction.Left:
for (int n = cols; n > 0; )
matrix[rowOffset + rows - 1,colOffset + --n] = ++start;
Fill(matrix,Direction.Up,start,rows - 1,cols,rowOffset,colOffset);
break;
case Direction.Right:
for (int n = 0; n < cols; ++n)
matrix[rowOffset,colOffset + n] = ++start;
Fill(matrix,Direction.Down,start,rows - 1,cols,rowOffset + 1,colOffset);
break;
case Direction.Up:
for (int n = rows; n > 0; )
matrix[rowOffset + --n,colOffset] = ++start;
Fill(matrix,Direction.Right,start,rows,cols - 1,rowOffset,colOffset + 1);
break;
case Direction.Down:
for (int n = 0; n < rows; ++n)
matrix[rowOffset + n,colOffset + cols - 1] = ++start;
Fill(matrix,Direction.Left,start,rows,cols - 1,rowOffset,colOffset);
break;
}
}
enum Direction { Left,Right,Up,Down };
static void Main(string[] args)
{
int n = 4;
int[,] matrix = new int[n,n];
Fill(matrix,Direction.Right,0,4,4,0,0);
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
Console.Write(matrix[i,j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
一个旋转矩阵问题同学给了我一个题目就是输入一个正整数n 比如n=4输出一个n*n的矩阵如下 1 2 3 412 13 1
C语言,输入一个(1~20)的数n!得到n*n个数,以n*n矩阵顺时针输出!
用Java编程 :输入一个正整数n,输出n!的值.其中n!=1*2*3*…*n.
输入一个正整数n(1≤n≤6)和n 阶矩阵a 中的元素,如果a 是上三角矩阵,输出“YES”;否则,输出“NO”
输入一个正整数n(1《=n《=6),再输入一个n行n列的矩阵,统计并输出该举证中非零元素的个数
输入一个正整数n(1 输入一个正整数n(1
输入一个正整数n(1
输入一个正整数 n (1
C语言.输入一个正整数n,求s=1+2+3+.n的和.如输入50输出1275输入1000输出500500
给一个整数 N,生成一个 N*N 的矩阵,矩阵中元素取值为1-N2,1 在左上 角,其余各数按顺时针方向旋转前进
C语言请教高手,输入一个数字n,以该数字作为矩阵的大小,把1,2,3...n*n的数字按顺时螺旋输出.
1、定义一个N*N的矩阵,输出其对角线元素、上三角矩阵和下三角矩阵; 2、 编程实现N阶方阵的乘法运算.