不,会再见

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在求最长公共子序列问题中,在使用动态规划的填表法时,我们要用两个for循环来初始化这个表,

 int c[MAXLEN][MAXLEN]; //记录子问题XiYj的解
//
当x序列为空时,最长公共子序列长度为0 for (int j = 0; j <= n; j++) c[0][j] = 0; //当y序列为空时,最长公共子序列长度为0 for (int i = 0; i <= m; i++) c[i][0] = 0;

而我们可以使用memset函数来将表初始化为0,需要头文件<cstring>

int c[MAXLEN][MAXLEN]; //记录子问题XiYj的解
memset(c, 0, sizeof(c)); //初始化

使用memset函数时,要注意以下几点:

  • memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值
  • 因为char是1字节,memset是按照字节赋值的,相当于把每个字节都设为那个数,所以char型的数组可赋任意值;
  • 而在给char型以外的数组赋值时,只能初始化为0或者-1。

   参考链接:https://www.cnblogs.com/yhlboke-1992/p/9292877.html

 

                     https://blog.csdn.net/lyj2014211626/article/details/65481630                     

 

posted on 2020-11-28 17:14  不,会再见  阅读(423)  评论(0)    收藏  举报