方格取数(局部最优解与全局最优解的思路

2024-02-26 18:08

本文主要是介绍方格取数(局部最优解与全局最优解的思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

在这里插入图片描述
##错误代码如下##

#include<iostream>
using namespace std;
int n;
int m[20][20];
int dp[20][20];
int dp2[20][20];
int f[21][11][11];
pair<int,int>state[11][11];
int maxx(int a,int b,int c,int d){return max(  max(a,b) , max(c,d)  );
}
int main(){cin>>n;int x,y,z;while(cin>>x>>y>>z,x||y||z)m[x][y]=z;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dp[i][j]=max(dp[i-1][j],dp[i][j-1])+m[i][j];if(dp[i][j]==dp[i-1][j]+m[i][j])state[i][j]={i-1,j};else state[i][j]={i,j-1};}}int i=n,j=n;while(i||j){m[i][j]=0;int x=i,y=j;i=state[x][y].first;j=state[x][y].second;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dp2[i][j]=max(dp2[i-1][j],dp2[i][j-1])+m[i][j];}}cout<<dp[n][n]+dp2[n][n];}

在这里插入图片描述


#include<iostream>
using namespace std;
int n;
int m[20][20];
int dp[20][20][20][20];int maxx(int a,int b,int c,int d){return max(  max(a,b) , max(c,d)  );
}int main(){cin>>n;int x,y,z;while(cin>>x>>y>>z,x||y||z)m[x][y]=z;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 &x=dp[i1][j1][i2][j2];int t=m[i1][j1];if(i1!=i2)t+=m[i2][j2];x=maxx(dp[i1][j1-1][i2][j2-1],dp[i1][j1-1][i2-1][j2],dp[i1-1][j1][i2-1][j2],dp[i1-1][j1][i2][j2-1])+t;}}}}cout<<dp[n][n][n][n];
}

#include<iostream>
using namespace std;
int n;
int m[20][20];
int dp[20][20][20][20];
int f[21][11][11];
int maxx(int a,int b,int c,int d){return max(  max(a,b) , max(c,d)  );
}int main(){cin>>n;int x,y,z;while(cin>>x>>y>>z,x||y||z)m[x][y]=z;for(int k=2;k<=2*n;k++){for(int i1=1;i1<=n;i1++){for(int i2=1;i2<=n;i2++){int j1=k-i1,j2=k-i2;int &x=f[k][i1][i2];int t=m[i1][j1];if(i1!=i2)t+=m[i2][j2];x=maxx(f[k-1][i1][i2],f[k-1][i1][i2-1],f[k-1][i1-1][i2],f[k-1][i1-1][i2-1])+t;}}}cout<<f[2*n][n][n];}
#include<iostream>
#include<cstring>
using namespace std;const int N = 15;int n, r, c, num;
int f[N + N][N][N], w[N][N];int main() {cin >> n;while(cin >> r >> c >> num, r || c || num) {w[r][c] = num;}//k表示其中两条路径长度的总和for(int k = 2; k <= n + n; k++) {for(int i1 = 1; i1 <= n; i1++) {for(int i2 = 1; i2 <= n; i2++) {int j1 = k - i1, j2 = k - i2;if(j1 < 1 || j1 > n || j2 < 1 || j2 > n) continue;//要走的路径int t = w[i1][j1];if(i1 != i2) t += w[i2][j2];int& x = f[k][i1][i2];x = max(x, t + f[k - 1][i1 - 1][i2 - 1]);       //上一个状态的两条路径分别往下走一格x = max(x, t + f[k - 1][i1][i2 - 1]);           x = max(x, t + f[k - 1][i1 - 1][i2]);x = max(x, t + f[k - 1][i1][i2]);}}}cout << f[n + n][n][n] << endl;return 0;
}作者:抽象带师
链接:https://www.acwing.com/solution/content/30705/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


1.考虑状态表示的问题(降维,对每一维度的理解)
2.考虑集合划分的问题(深入了解01思想,无论是对差分还是前缀和都很有用处)
刷题强度要跟上来!!!!!
啊啊啊啊冲冲冲!!!!

这篇关于方格取数(局部最优解与全局最优解的思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749704

相关文章

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

如何打造个性化大学生线上聊天交友系统?Java SpringBoot Vue教程,2025最新设计思路

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

集群环境下为雪花算法生成全局唯一机器ID策略

雪花算法是生成数据id非常好的一种方式,机器id是雪花算法不可分割的一部分。但是对于集群应用,让不同的机器自动产生不同的机器id传统做法就是针对每一个机器进行单独配置,但这样做不利于集群水平扩展,且操作过程非常复杂,所以每一个机器在集群环境下是一个头疼的问题。现在借助spring+redis,给出一种策略,支持随意水平扩展,肥肠好用。 大致策略分为4步: 1.对机器ip进行hash,对某一个(大于