- 论坛徽章:
- 1
|
本帖最后由 sublx 于 2013-03-17 09:17 编辑
代码如下,这样删除2维数组有问题?还有哪里把堆栈破坏掉了?- void find_look_like(char *str1, char *str2, int **c)
- {
- int len1 = strlen(str1);
- int len2 = strlen(str2);
- int i, j;
- for (i = 0; i < len1 + 1; ++i) c[i][0] = 0;
- for (i = 0; i < len1 + 1; ++i) c[0][i] = 0;//这里错了,应该是for (i = 0; i < len2 + 1; ++i)
- for (i = 1; i < len1 + 1; ++i)
- {
- for (j = 1; j < len2 + 1; ++j)
- {
- if (str1[i -1] == str2[j - 1])
- {
- c[i][j] = c[i - 1][j - 1] + 1;
- }
- else if (c[i - 1][j] >= c[i][j - 1])
- {
- c[i][j] = c[i - 1][j];
- }
- else{
- c[i][j] = c[i][j - 1];
- }
- }
- }
- }
- void show_array_2(int **array, int len1, int len2)
- {
- int i,j;
- for (i = 0; i < len1; ++i)
- {
- for (j = 0; j < len2; ++j)
- {
- cout << array[i][j] <<",";
- }
- cout << endl;
- }
- }
- int main()
- {
- char buf1[] = "ABCBDAB";
- char buf2[] = "BDCABA";
- int len1 = strlen(buf1);
- int len2 = strlen(buf2);
- int **array, i;
- array = new int *[len1 + 1];
- for (i = 0; i < len1 + 1; ++i) array[i] = new int [len2 + 1];
- find_look_like(buf1, buf2, array);
- show_array_2(array, len1 + 1, len2 + 1);
- for (i = 0; i < len1 + 1; ++i)
- {
- delete [] array[i];//这里出错了,不是这样删除?
- }
- delete [] array;
- return 1;
- }
复制代码 |
|