gpt4 book ai didi

c++ - 没有库函数复制字符矩阵(char**)

转载 作者:行者123 更新时间:2023-11-28 05:45:01 26 4
gpt4 key购买 nike

我需要做一个函数作为家庭作业,给定一个由 T 和 A 组成的字符矩阵,返回所述矩阵上的岛屿数量,在西类牙语中是 T 陆地和 A 水域。所有这些我都可以做,但还有一个问题,我可以修改作为参数给出的矩阵。我想在调用我的函数并发送新函数之前复制矩阵,但我做不到。正如标题所说,我需要完全没有任何类型的库函数(例如 strcopy)。我会传递我的代码以防万一:

int islands(char** map, int col, int row){
char** aux = map;//I don't think this line does anything
int cont = 0;
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
char c = aux[i][j];
if (aux[i][j] =='T') {
cont++;
deleteLand(aux, i,j, col, row);
}
}
}
int a = cont;
return cont;
}


void deleteLand(char** map, int t1,int t2, int col, int row) {
map[t1][t2] = 'A';
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
if (!(i==0 && j ==0)&&(t1 + i >= 0 && t1 + i < col) && (t2 + j >= 0 && t2 + j < row)) {
if (map[t1 + i][t2 + j] == 'T') {
int tc = t1+i;
int tr = t2 + j;
deleteLand(map, tc,tr,col,row);
}
}
}
}
}

以及它返回的示例:输入:(['T','T','A' '一个','一个','T' '一个','一个','一个' 'T','T','A'], 3, 4)返回:2

希望它足够清楚。另外,在写这篇文章时,我意识到我可以在进入时保存矩阵的值并在退出时再次复制它,但我认为它实际上是一样的。非常感谢提供的任何帮助

最佳答案

要复制数组(数组中的数据),您需要为其分配空间。使用拷贝后,您应该释放内存。


我想在这种情况下复制数据的唯一原因是要恢复 map 中的原始数据。如果是这样,更好的解决方案是使用另一个字母,比如“B”,来掩盖 deleteLand 中访问过的岛屿。然后完成后,您可以快速恢复原始 map ,将所有 B 更改为 T。它避免了分配和释放内存的所有问题。

编辑:我不得不删除实际的代码,它在 C++ 中,因为同时删除了标签 C++。

关于c++ - 没有库函数复制字符矩阵(char**),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392475/

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