sequence

要求对一个字符串分割,使得他上升

就是dp

比较两个字符串的大小,然后就根据转移

代码:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
//i:n~1 j:n-i+1~1
const int N = 5010,mod = 10000007;
int f[N][N];
int a[N][N];
string s;
int checker(int i,int j){
	int t = min(j - 1,a[i][i + j]);
	return s[i + t] < s[i + j + t];
}
int main(){
	int n;
	cin >> n;
	cin >> s;
	s = ' ' + s;
	for (int i = n; i >= 1; i -- ){
		for (int j = n; j >= 1; j -- ){
			if (s[i] == s[j]){
				a[i][j] = a[i + 1][j + 1] + 1;
			}
		}
	}
	for (int i = n; i >= 1; i -- ){
		for (int j = n - i; j >= 1; j -- ){
			if (s[i] == '0'){
				continue;
			}
			int t = 0;
			f[i][n - i + 1] = 1;
			if (checker(i,j)){
				f[i][j] = (f[i][j] + f[i + j][j]) % mod; 
			} 
			else{
				f[i][j] = (f[i][j] + f[i + j][j + 1]) % mod;
			}
		}
		for (int j = n; j >= 1 ; j --){
			f[i][j] = (f[i][j] + f[i][j + 1]) % mod;
		}
	}
	cout << f[1][1];
	return 0;
} 
相关推荐
一只叁木Meow18 小时前
电商 SKU 选择器:用算法实现优雅的用户交互
前端·javascript·算法
代码中介商18 小时前
红黑树完全指南:从五条性质到完整插入删除实现
数据结构·算法
JieE21218 小时前
反转链表:从双指针到递归,吃透链表反转的核心逻辑
javascript·算法
玖釉-18 小时前
旋转图像:从矩阵转置、镜像到坐标变换的系统理解
c++·windows·算法·图形渲染
fengenrong18 小时前
20260522
算法
一条大祥脚19 小时前
Codeforces Round 1099 (Div. 2) 构造|贪心|图论|还原数组
java·算法·图论
Sheldon Chao19 小时前
Lecture 7 基于策略梯度的算法
人工智能·算法·机器学习
始三角龙19 小时前
LeetCode hoot 100 -- 缺失的第一个正整数
算法·leetcode·职场和发展
飞Link19 小时前
深度解析孪生网络(Siamese Network):从原理、技巧到实战应用
算法·数据挖掘·回归
测试狗科研平台19 小时前
洞悉微观电荷流动,VASP计算电荷密度分布
算法·云计算·开源软件