gpt4 book ai didi

c - 如何在 C 中以常数时间交换两个矩阵?

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

目前,我正在使用逐个元素交换的迭代方法,这似乎非常低效。是否可以在常数时间内交换两个二维数组?

int a[20][100];
int b[20][100];

我想在 O(1) 中交换 ab

此外,如果我只想将 b 覆盖为 a,是否可以应用相同的解决方案?

下面是我用来用“b”迭代覆盖“a”的代码。

下面的代码用于用 b 覆盖 a:

for(x = 0;x<row;x++){
for(y=0;y<col;y++){
a[x][y] = b[x][y];
}
}

下面是我用来交换 a 和 b 的代码:

for(x = 0;x<row;x++){
for(y=0;y<col;y++){
temp = a[x][y];
a[x][y] = b[x][y];
b[x][y] = temp;
}
}

最佳答案

您需要将它们存储为指针。例如:

int a_store[20][100];
int b_store[20][100];

int (*a)[20][100] = &a_store;
int (*b)[20][100] = &b_store;

现在很容易交换它们。您也可以在堆上分配它们,或在 C++ 中使用 std::vector

关于c - 如何在 C 中以常数时间交换两个矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44309293/

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