首页 > 其他分享 >数字三角形(左右步数差不能超过一)

数字三角形(左右步数差不能超过一)

时间:2024-03-16 19:34:22浏览次数:14  
标签:arr 数字 int else 三角形 101 步数 dp

题目选自https://www.lanqiao.cn/courses/31015/learning/?id=1926986

这个题目虽然跟正常的数字三角形一样使用dp动态规划做的,但是在题目的最后一行提到左右选择的次数差要小于一;
那么也就是说我们自顶向下找,设立一个数组dp[i][j]用来存放已到达i行j列的最优解。

找完n行之后我们得到n行j列的每个最优解dp[n][j];

此时的dp数组并未考虑左右步长之差不能超过1不符合条件;
如何才能使我们得到符合条件呢?

既然左右步长之差不能超过一就从最后一例最优解vis[n][j]中找中间的列数的最优解。

也就是说 要想要左右步数不能超过一 那么必然在中间取到 因为|左步数-右步数|< =1;
若n为偶数 即步数为奇数 此时|左步数-右步数|= =1 即在第n行中间两个数((n/2),(n/2)+1)取;
若n为奇数 即步数为偶数 此时|左步数-右步数|= =0 即在第n行中间取(n/2+1);

include<bits/stdc++.h>

using namespace std;
int arr[101][101];
int dp[101][101];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>arr[i][j];
}
}
dp[1][1]=arr[1][1];
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
if(j = = 1)dp[i][j]=dp[i-1][j]+arr[i][j];
else if(j = = i)dp[i][j]=dp[i-1][j-1]+arr[i][j];
else dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+arr[i][j];
}
}
if(n%2==1){
cout<<dp[n][n/2+1];
}
else{
cout<<max(dp[n][n/2],dp[n][n/2+1]);
}
return 0;
}

此篇文章为在下的第一篇博客,可能写的不是那么明了,如果有更好的方法或观点请指教。

标签:arr,数字,int,else,三角形,101,步数,dp
From: https://www.cnblogs.com/432341abc3434/p/18077466

相关文章

  • [SDOI2017]数字表格
    Decribe:求\(\prod_{i=1}^{n}\prod_{j=1}^{m}f_{\gcd(i,j)}\),其中\(f_i\)代表斐波那契数列的第\(i\)项。Solution:显然莫反启动!\[\prod_{i=1}^{\min(n,m)}f_i^{\sum_{j=1}^{n}\sum_{k=1}^{m}[gcd(j,k)==i]}\]\[\prod_{i=1}^{\min(n,m)}f_i^{\sum_{j=1}^{\lfloor\f......
  • LabVIEW多表位数字温湿度计图像识别系统
    LabVIEW多表位数字温湿度计图像识别系统解决数字温湿度计校准过程中存在的大量需求和长时间校准问题,通过LabVIEW开发平台设计了一套适用于20多个表位的数字温度计图像识别系统。该系统能够通过图像采集、提取和处理,进行字符训练,从而实现对不同型号数字温湿度计的温度和湿度字......
  • 常用加密及其相关的概念、简介(对称、AES、非对称、RSA、散列、HASH、消息认证码、HMAC
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  在之前,一直是通过生活、工作零零碎碎接触过加密及加密算法相关的信息,但是也只是听说过,并不知道这些算法用处和区别。  最近由于工作安......
  • 利用Python来计算微信群内捐款总额(正则匹配提取数字),并利用pandas把数据存入到excel中
    概述    这是一个现实中实际的案例,用到的知识也都是非常基础的东西,刚学完Python基础知识的可以用来练手。        情况是这样的,前两天村里有人突发重病,住进了重症监护室,这个人是家里上有老、下有小,家庭条件比较困难,因此村里组织号召大家捐款,村里人也积极友爱......
  • 数字多空策略交易系统(实盘+回测+数据)
    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。技术宅此前分享的数字货币策略多为单边策略。单边策略最大的特征是在承担一定的波动风险前提下获取高收益率。而对于许多稳健的、中、低风险偏好的投资者来说,在承担尽可能小的波动风险前提下,获取......
  • 三角形面积和周长
    ‘’’写—段程序,让用户输入三角形的三条边长,如果三条边长不能构成三角形,则提示用户重新输入如果可以构成三角形,则计算周长和面积对于用户的输入,首先要约定格式,这里简单的约定为每个边长之间用空格间隔在获得用户的输入以后,要对输入进行检查,有两点需要检查(1)检查是不......
  • <DFS剪枝>数字王国之军训排队
    其实就是将搜索过程一些不必要的部分直接剔除掉。剪枝是回溯法的一种重要优化手段,往往需要先写一个暴力搜索,然后找到某些特殊的数学关系,或者逻辑关系,通过它们的约>束让搜索树尽可能浅而小,从而达到降低时间复杂度的目的。示例:分析:n->[1,10],数据范围并不是很大,我们可以......
  • Uhnder数字(PMCW)雷达
    Uhnder数字(PMCW)雷达1引言        根据Uhnder的官方文档《DIGITALCODEMODULATION(DCM)RADARFORAUTOMOTIVEAPPLICATION》,其数字雷达主要的特点如下:      1)高对比度分辨率(HCR),定义为在大目标附近分辨小目标的能力,比如小孩站在大卡车前面;      2)......
  • 字符三角形/字符菱形
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){ chara; inte=1,j,t=31; for(inti=0;i<10;i++){ j=65; cout<<setw(t-1); t--; for(inth=0;h<e;h++){ a=j; cout<<a; j++; } e+=2; cout&......
  • 13. 罗马数字转整数c
    intromanToInt(char*s){intn=strlen(s);intc[26];c['I'-'A']=1;c['V'-'A']=5;c['X'-'A']=10;c['L'-'A']=50;c['C'-'A']=100;......