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

AcWing---乌龟棋---线性dp

312. 乌龟棋 - AcWing题库 

思路:

原来没有碰到过类似的题:

  1. dp数组为思维:dp[i][j][k][r],分别表示用了i个第一类型卡片,j个第二类型卡片...所到的格子数的最大分数,为啥不用记录乌龟到了哪里呢?因为i*1+j*2+k*3+r*4已经表明了小乌龟的终点位置了。
  2. 状态转移方程式dp[i][j][k][r]=max(dp[i-1][j][k][r],dp[i][j-1][k][r],...)+a[i*1+j*2+k*3+r*4]
  3. 数组初始化:dp[0][1][2][3]=0

C++代码:

#include<bits/stdc++.h>
using namespace std;int g[41][41][41][41];
int n,m;
int a[400];
int b[5];int main(){cin>>n>>m;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<m;i++){int temp;cin>>temp;b[temp]++;}g[0][0][0][0]=a[0];for(int i=0;i<=b[1];i++){for(int j=0;j<=b[2];j++){for(int k=0;k<=b[3];k++){for(int r=0;r<=b[4];r++){if(i-1>=0){g[i][j][k][r]=max(g[i][j][k][r],g[i-1][j][k][r]+a[i+2*j+3*k+4*r]);}if(j-1>=0){g[i][j][k][r]=max(g[i][j][k][r],g[i][j-1][k][r]+a[i+2*j+3*k+4*r]);}if(k-1>=0){g[i][j][k][r]=max(g[i][j][k][r],g[i][j][k-1][r]+a[i+2*j+3*k+4*r]);}if(r-1>=0){g[i][j][k][r]=max(g[i][j][k][r],g[i][j][k][r-1]+a[i+2*j+3*k+4*r]);}}}}}cout<<g[b[1]][b[2]][b[3]][b[4]];return 0;
}

 python代码:

n,m=map(int,input().split())
a=list(map(int,input().split()))
b_temp=list(map(int,input().split()))
b=[0]*5
for i in b_temp:b[i]+=1g=[[[[0 for _ in range(41)] for _ in range(41)] for _ in range(41)] for _ in range(41)]
g[0][0][0][0]=a[0]
for i in range(b[1]+1):for j in range(b[2]+1):for k in range(b[3]+1):for r in range(b[4]+1):if i-1>=0:g[i][j][k][r]=max(g[i][j][k][r],g[i-1][j][k][r]+a[i+j*2+k*3+r*4]);if j-1>=0:g[i][j][k][r]=max(g[i][j][k][r],g[i][j-1][k][r]+a[i+j*2+k*3+r*4]);if k-1>=0:g[i][j][k][r]=max(g[i][j][k][r],g[i][j][k-1][r]+a[i+j*2+k*3+r*4]);if r-1>=0:g[i][j][k][r]=max(g[i][j][k][r],g[i][j][k][r-1]+a[i+j*2+k*3+r*4]);
print(g[b[1]][b[2]][b[3]][b[4]])

http://www.lryc.cn/news/334822.html

相关文章:

  • python代码使用过程中使用快捷键注释时报错
  • go之web框架gin
  • SpringBoot 定时任务实践、定时任务按指定时间执行
  • MYSQL数据库故障排除与优化
  • 算法-数论-蓝桥杯
  • 222.完全二叉树节点个数
  • C++中的string类操作详解
  • Java绘图坐标体系
  • 【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,以及LS/LMMSE两种信道估计方法以及不同调制方式对比。
  • javaWeb车辆管理系统设计与实现
  • 【DM8】间隔分区
  • 0基础如何进入IT行业?
  • C#将Console写至文件,且文件固定最大长度
  • 《CSS 知识点》仅在文本有省略号时添加 tip 信息
  • 彩虹聚合DNS管理系统v1.0全新发布
  • 3.10 Python数据类型转换
  • Kotlin基础学习
  • 配置交换机 SSH 管理和端口安全——实验1:配置交换机基本安全和 SSH管理
  • 海山数据库(He3DB)原理剖析:浅析Doris跨源分析能力
  • 第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 题解
  • 20240324-1-集成学习面试题EnsembleLearning
  • 默克尔(Merkle)树 - 原理及用途
  • 设计模式:迭代器模式
  • Navicat Premium 16常用快捷键
  • LeetCode笔记——1042.不邻接植花
  • Centos7搭建 Skywalking 单机版
  • 定制您的设备体验:如何更改Android启动动画
  • Docker日常系列
  • Midjourney该怎么用?从零基础到落地实践
  • K8S:常用资源对象操作