gpt4 book ai didi

矩阵的循环列

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:03 24 4
gpt4 key购买 nike

我遇到一个问题,要求我循环 MxN 矩阵的列 Z 次。我目前的代码在下面,但是当我运行它时,一些列消失了。

我的代码应该将第一列移动到第二列,将第二列移动到第三列,依此类推,然后将最后一列移动到第一列。

int first[5][5], second[5][5], i, j;    

int temp[5][5];
for(i = 0; i < 5; i++){
for(j = 0; j < numprocs; j++){
temp[i][j] = second[i][j];
second[i][j] = second[i--][j];
second[i++][j] = temp[i][j];
}
}

最佳答案

  • 不需要整个 大小的重复数组。您可以循环一个数组本身中的元素。在一张纸上试一下。
  • 您每次都需要备份第一列,因为它会被覆盖。然后,恢复此备份。

我使用简单的数组和一些循环来完成它。看看代码,它是不言自明的,我已经适本地评论了:

#include <stdio.h>
#include <stdlib.h>

#define M 2 //no of rows
#define N 5 //no of columns

int print(int (*matrix)[N]);

int main(void)
{
int matrix[M][N];
int backup[M];

int Z; //no of times to cycle
int i, j, k;

//get the i/p
printf("Enter matrix:\n");
for(i = 0 ; i < M ; i++)
for(j = 0 ; j < N ; j++)
scanf("%d", &matrix[i][j]);

//get Z
printf("How many times to cycle?\n");
scanf("%d", &Z);

//for Z = 0
if(Z == 0)
{
print(matrix);
return 0;
}



Z = (Z%N); //adjust Z to avoid unnecessary rotations because
//rotating an array of 5 columns 25 times is same as rotating 0 times
//(it will end up in original position after 25 rotations)

for(k = 0 ; k < Z ; k++) //first loop for Z rotations
{
//take backup of 1st col of matrix
for(int i = 0 ; i < M ; i++)
backup[i] = matrix[i][0];

for(i = N - 1 ; i >= 0 ; i--) //second loop for copying each column
{
//copy ith column into (i+1)%n th column
for(j = 0 ; j < M ; j++) //loop to copy all elements of column
{
matrix[j][(i+1)%N] = matrix[j][i]; //logic to wrap the last col to first one
}
}

//restore backup into 1st col
for(j = 0 ; j < M ; j++)
matrix[j][1] = backup[j];

}

print(matrix);
}

int print(int (*matrix)[N])
{
int i, j;
for(i = 0 ; i < M ; i++)
{
for(j = 0 ; j < N ; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}

下面是示例程序的运行:

Enter matrix:
1 2 3 4 5
1 2 3 4 5
How many times to cycle?
1
5 1 2 3 4
5 1 2 3 4
aditya@aditya-laptop:~/Desktop$ cc so.c -std=c11&& ./a.out
Enter matrix:
1 2 3 4 5
1 2 3 4 5
How many times to cycle?
3
3 4 5 1 2
3 4 5 1 2

关于矩阵的循环列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com