zoukankan      html  css  js  c++  java
  • 滚动数组降维

    最后补充一下滚动数组降维:

    其实就是状态转移后前面的数组的空间不用了 ,会造成浪费,而滚动数组就是利用这部分空间

    写Dp经常需要大家开高维数组,比如F[t][i][j]。有的时候转移仅需要上一维数组,如F[t-1][i][j],而F[t-2],F[t-3]都不再有用,留着占用大量空间。我们可以用滚动数组的方式节省大量空间。 本来:int F[100][100][100]; 滚动:int F[2][100][100];

    使用姿势: 维护两个数字指针Now和Pre,分别表示当前在哪一维,上一维在哪一维。也就是0和1这两个下标,哪个表示的是F[t][i][j],哪个表示的是F[t-1][i][j]。

    1 //例子:
    2 for (int t = 1; t <= T; t++)
    3 {
    4 swap(Now, Pre);/注意这个swap用的非常精妙,不用把两个数组的值互换,仅仅互换指针就可以了。/
    5 for (int i = 1; i <= N; i++)
    6 for (int j = 1; j <= M; j++)
    7 F[Now][i][j] = F[Pre][i…][j…] + …;
    8 }

  • 相关阅读:
    ER图
    uml图
    第一个迭代任务的制作
    软件测试
    实训记录
    UML系列图——ER图
    UML系列图——用例图
    第一个迭代任务进度
    第一个迭代任务
    需求分析——WBS
  • 原文地址:https://www.cnblogs.com/Roni-i/p/9537184.html
Copyright © 2011-2022 走看看