当前位置: 首页 > news >正文

动态规划——线性dp

动态规划


参考闫氏 d p 分析法 参考闫氏dp分析法 参考闫氏dp分析法

方格取数

f [ i 1 ] [ j 1 ] [ i 2 ] [ j 2 ] 表示( 1 , 1 )到( i 1 , j 1 )和( 1 , 1 )到 ( i 2 , j 2 ) 和的最大值 f[i1][j1][i2][j2]表示(1,1)到(i1,j1)和(1,1)到(i2,j2)和的最大值 f[i1][j1][i2][j2]表示(1,1)到(i1,j1)和(1,1)到(i2,j2)和的最大值
利用最后一步不同的思想,找个集合可以由四种状态转移过来 利用最后一步不同的思想,找个集合可以由四种状态转移过来 利用最后一步不同的思想,找个集合可以由四种状态转移过来
分别是第一次到 ( i 1 , j 1 ) 的两种转移状态乘以 ( i 2 , j 2 ) 的两种转移状态 分别是第一次到(i1,j1)的两种转移状态乘以(i2,j2)的两种转移状态 分别是第一次到(i1,j1)的两种转移状态乘以(i2,j2)的两种转移状态
这个题还有个限制就是不可以重复取,第一次取了第二次就清零了 这个题还有个限制就是不可以重复取,第一次取了第二次就清零了 这个题还有个限制就是不可以重复取,第一次取了第二次就清零了
就相当于先确定 ( i 1 , j 1 ) 的位置然后推出所有 f [ i 1 ] [ j 1 ] [ i 2 ] [ j 2 ] 的值,如果不重复就是 w [ i 1 ] [ j 1 ] + w [ i 2 ] [ j 2 ] ,如果是重合的终点那么就只加一个 就相当于先确定(i1,j1)的位置然后推出所有f[i1][j1][i2][j2]的值,如果不重复就是w[i1][j1]+w[i2][j2],如果是重合的终点那么就只加一个 就相当于先确定(i1,j1)的位置然后推出所有f[i1][j1][i2][j2]的值,如果不重复就是w[i1][j1]+w[i2][j2],如果是重合的终点那么就只加一个





四维代码


#include<bits/stdc++.h>

using namespace std;

const int N = 12;

int n, x, y, c;

int f[N][N][N][N];

int w[N][N];

int main(){
    
    cin >> n;
    
    while((cin >> x >> y >> c), (x && y && c)){
        w[x][y] = c;
    }
    
    for(int i1 = 1; i1 <= n; i1 ++)
    {
        for(int j1 = 1; j1 <= n; j1 ++)
        {
            for(int i2 = 1; i2 <= n; i2 ++)
            {
                for(int j2 = 1; j2 <= n; j2 ++)
                {
                    int &v = f[i1][j1][i2][j2];
                    v = f[i1-1][j1][i2-1][j2] + w[i1][j1];
                    v = max(f[i1][j1-1][i2-1][j2] + w[i1][j1], v);
                    v = max(f[i1-1][j1][i2][j2-1] + w[i1][j1], v);
                    v = max(f[i1][j1-1][i2][j2-1] + w[i1][j1], v);
                    if(i1 != i2 && j1 != j2)
                    {
                        v += w[i2][j2];
                    }
                }
            }
        }
    }
    cout << f[n][n][n][n];
    return 0;
    
}


相关文章:

  • python10_IO目录处理
  • PostgreSQL实用技巧
  • Linux tracepoint 简介
  • java 瑞吉外卖day6 移动端 套餐 菜品展示 购物车加减,清空
  • Debezium系列之:打通Debezium2.0以上版本的使用技术
  • String类及常用方法
  • Rasa 基于知识库的问答 音乐百科机器人
  • 内科大深度学习期末复习笔记
  • 搭建nacos
  • Java面试--AQS
  • 电脑重装系统win11如何更改默认下载路径
  • MTI运动传感器ROS配置
  • DFS——剪枝优化迭代加深
  • 【Flutter】packages思维以及使用Java添加Android平台特定的实现在Flutter框架里的体现和运用
  • 无向图以及图的java代码实现
  • 大数据平台之Hadoop复习详细知识点
  • 四、网络层(五)IP组播
  • 513. 找树左下角的值
  • python csv模块读取/写入csv文件
  • Nacos学习笔记 (5)Nacos整合SpringBoot流程