蓝桥杯——数组切分

数组切分

题目分析

这里要搞清楚一个点就是满足区间内数字是连续数字的区间有什么样的特点,既然数字连续重新排列后的数字为n,n+1,n+2,n+3,n+4,...n+len,则最大数字和最小数字之差恰好是区间长度减1,即n+len-n=len,同样因为下标也是连续数字,那么左端点和右端点的下标之差也是区间长度减1,所以最大数字和最小数字之差恰好是左端点和右端点的下标之差。

定义dpi表示以ai结尾的区间能够被划分的区间的个数,那么dpi可以从 d p j − 1 ( j < i ) dpj-1(j<i) dpj−1(j<i)转移过来的条件是aj~ai这个区间是一个连续区间。

题目代码

java 复制代码
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int a[] = new int[n+1];
    int mod = 1000000007;
    for (int i = 1; i < a.length; i++) {
        a[i] = scanner.nextInt();
    }
    int dp[] = new int[n+1];
    dp[0] = 1;
    for (int i = 1; i < dp.length; i++) {
        int max = a[i];
        int min = a[i];
        for (int j = i; j > 0; j--) {
            max = Math.max(a[j], max);
            min = Math.min(a[j], min);
            if(max-min==i-j) {
                dp[i] = (dp[i] + dp[j-1])%mod;
            }
        }
    }
    System.out.println(dp[n]);
}
}
相关推荐
AI产品实战7 小时前
Gradle打包生成dependencies.xml详解
xml·java·gradle
方华世界7 小时前
企业级Java AI Agent应用平台
java·开发语言·人工智能
2301_800256117 小时前
数据结构基础期末复习例题
数据结构·算法
折哥的程序人生 · 物流技术专研7 小时前
第8篇:模板方法模式的优缺点与面试高频考点
java·设计模式·面试·模板方法模式·行为型模式·优缺点·扩充系列
变量未定义~8 小时前
单调栈-四元组问题
数据结构·算法
冷小鱼8 小时前
AI Agent 核心算法:任务规划(Planning)的深度技术解析
人工智能·算法·planning
退休倒计时8 小时前
【每日一题】LeetCode 78. 子集 TypeScript
算法·leetcode·typescript
旖-旎8 小时前
《LeetCode 978 最长湍流子数组 || LeetCode 139 单词拆分》
c++·算法·leetcode·动态规划
人道领域8 小时前
【0-1的agent进阶篇】Prompt 与上下文工程
java·开发语言·prompt·mcp
cxr8288 小时前
第16章 跨域迁移与能力融合——从专家到通才
人工智能·算法·智能体·hermes