c中的移位矩阵列
shift matrix columns in c
如何将矩阵的每一列向左移动行号?
例如
0, 1, 2, 3
4, 5, 6, 7
8, 9,10,11
12,13,14,15
这是一个4*4的矩阵,第一行索引为0,所以列不会移动,
第二行的索引为 1,因此每列将向左移动 1 个点(循环)。
给定矩阵的输出是
example
我的函数代码是:
void ShiftRows(int message[M][M])
{
int temp = 0;
for (int i = 1; i < M ; i++)
{
for (int j = 0; j < M; j++)
{
temp = message[i][(j-i)%M];
message[i][(j-i)%M] = message[i][j];
message[i][j] = temp;
}
temp = 0;
}
}
您只交换了 2 个值。这不适用于循环移动整行。
void ShiftRows(int message[M][M])
{
for (int i = 1; i < M ; i++)
{
int temp[M];
// First shift using a copy
for (int j = 0; j < M; j++)
{
temp[j] = message[i][(j+i)%M];
}
// After whole row is shifted, copy back
for (int j = 0; j < M; j++)
{
message[i][j] = temp[j];
}
}
}
如何将矩阵的每一列向左移动行号? 例如
0, 1, 2, 3
4, 5, 6, 7
8, 9,10,11
12,13,14,15
这是一个4*4的矩阵,第一行索引为0,所以列不会移动, 第二行的索引为 1,因此每列将向左移动 1 个点(循环)。 给定矩阵的输出是 example
我的函数代码是:
void ShiftRows(int message[M][M])
{
int temp = 0;
for (int i = 1; i < M ; i++)
{
for (int j = 0; j < M; j++)
{
temp = message[i][(j-i)%M];
message[i][(j-i)%M] = message[i][j];
message[i][j] = temp;
}
temp = 0;
}
}
您只交换了 2 个值。这不适用于循环移动整行。
void ShiftRows(int message[M][M])
{
for (int i = 1; i < M ; i++)
{
int temp[M];
// First shift using a copy
for (int j = 0; j < M; j++)
{
temp[j] = message[i][(j+i)%M];
}
// After whole row is shifted, copy back
for (int j = 0; j < M; j++)
{
message[i][j] = temp[j];
}
}
}