区间dp-进阶题目1(进阶合并)

解题思路

这题区间dp用的很妙。我们先用dp数组存储区间内能合并的值,如果无法合并存为-1。之后再用线性dp记录前iii个数能合并的最小值。

AC Code

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=505;
int n,a[maxn],f[maxn],dp[maxn][maxn];
int main(){
	cin>>n;
	memset(f,0x3f,sizeof(f));
	f[0]=0;
	for(int i=1;i<=n;i++) {
		cin>>a[i];
		dp[i][i]=a[i];
	}
	for(int lenn=2;lenn<=n;lenn++){
		for(int l=1,r=lenn+l-1;r<=n;l++,r++){
			dp[l][r]=-1;
			for(int k=l;k<r;k++)
				if(dp[l][k]==dp[k+1][r]&&dp[l][k]!=-1)
					dp[l][r]=dp[l][k]+1;
		}
	}
	for(int i=1;i<=n;i++){
		if(dp[1][i]>-1){
			f[i]=1;
			continue;
		}
		f[i]=f[i-1]+1;
		for(int j=1;j<i-1;j++){
			if(dp[j+1][i]>-1) f[i]=min(f[i],f[j]+1);
		}
	}
	cout<<f[n];
	return 0;
} 
相关推荐
叠层归一研究院13 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
其美杰布-富贵-李14 小时前
08 进阶评估指标与算法特定指标
人工智能·算法
.道阻且长.15 小时前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
我是海飞15 小时前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理
wabs66616 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
会周易的程序员17 小时前
aiDgePLC — IEC61131-3 ST PLC 虚拟机调试与运行环境
c++·物联网·虚拟机·st·工业协议·iec61131·梯形图
Tasiorh17 小时前
《基于LSTM-RNN-CBAM模型和动态规划模型的交易策略》
rnn·lstm·动态规划
lsylalalala18 小时前
常见的排序算法1
数据结构·算法·排序算法
想吃火锅100518 小时前
【leetcode】54. 螺旋矩阵
算法·leetcode·矩阵
wuminyu18 小时前
JVM利用io_uring优化堆外内存性能原理剖析
java·linux·c语言·jvm·c++