免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1926 | 回复: 2
打印 上一主题 下一主题

[C++] 【C++】刚学C/C++两小时就遇到难题,大牛请进!Help [复制链接]

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-16 23:54 |只看该作者 |倒序浏览
本帖最后由 sublx 于 2013-03-17 09:17 编辑

代码如下,这样删除2维数组有问题?还有哪里把堆栈破坏掉了?
  1. void find_look_like(char *str1, char *str2, int **c)
  2. {
  3.         int len1 = strlen(str1);
  4.         int len2 = strlen(str2);
  5.         int i, j;
  6.         for (i = 0; i < len1 + 1; ++i) c[i][0] = 0;
  7.         for (i = 0; i < len1 + 1; ++i) c[0][i] = 0;//这里错了,应该是for (i = 0; i < len2 + 1; ++i)
  8.         for (i = 1; i < len1 + 1; ++i)
  9.         {
  10.                 for (j = 1; j < len2 + 1; ++j)
  11.                 {
  12.                         if (str1[i -1] == str2[j - 1])
  13.                         {
  14.                                 c[i][j] = c[i - 1][j - 1] + 1;
  15.                         }
  16.                         else if (c[i - 1][j] >= c[i][j - 1])
  17.                         {
  18.                                 c[i][j] = c[i - 1][j];
  19.                         }
  20.                         else{
  21.                                 c[i][j] = c[i][j - 1];
  22.                         }
  23.                 }
  24.         }
  25. }



  26. void show_array_2(int **array, int len1, int len2)
  27. {
  28.         int i,j;
  29.         for (i = 0; i < len1; ++i)
  30.         {
  31.                 for (j = 0; j < len2; ++j)
  32.                 {
  33.                         cout << array[i][j] <<",";
  34.                 }
  35.                 cout << endl;
  36.         }
  37. }



  38. int main()
  39. {
  40.         char buf1[] = "ABCBDAB";
  41.         char buf2[] = "BDCABA";
  42.         int len1 = strlen(buf1);
  43.         int len2 = strlen(buf2);
  44.         int **array, i;

  45.         array = new int *[len1 + 1];
  46.         for (i =  0; i < len1 + 1; ++i) array[i] = new int [len2 + 1];
  47.         find_look_like(buf1, buf2, array);
  48.         show_array_2(array, len1 + 1, len2 + 1);
  49.         for (i = 0; i < len1 + 1; ++i)
  50.         {
  51.                 delete [] array[i];//这里出错了,不是这样删除?
  52.         }
  53.         delete [] array;
  54.         return 1;
  55. }
复制代码

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
2 [报告]
发表于 2013-03-17 09:18 |只看该作者
太不小心了。。。这么低级的错误

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
3 [报告]
发表于 2013-03-18 11:23 |只看该作者
刚学2小时 就可以用这么复杂的嵌套了,,,有钱途啊。。

命名和函数分类更规范一点就更好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP