数组切分 蓝桥杯 DFS DP

⭐ 数组切分
在这里插入图片描述
输入

4
1 3 2 4

输出

5

⭐ 区间最大值 - 区间最小值 == 区间长度:说明该区间为连续自然数

🤠 暴馊dfs (过 50 % 的案例)

import java.util.*;

public class Main
{
	static int mod = 1000000007, n;
	static int res = 0;

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		int[] a = new int[n];
		for (int i = 0; i < n; i++)
		{
			a[i] = sc.nextInt();
		}
		dfs(a, 0);
		System.out.println(res % mod);
	}

//	sta 表示当前搜索到的下标
	private static void dfs(int[] a, int sta)
	{
//		搜完啦
		if (sta == n)
		{
			res++;
			return;
		}

		for (int i = sta; i < n; i++)// 从区间起点开始,枚举每一个区间终点
		{
			if (check(a, sta, i))//
			{
				dfs(a, i + 1);
			}
		}
	}
	private static boolean check(int[] a, int l, int r)
	{
		int max = Integer.MIN_VALUE;
		int min = Integer.MAX_VALUE;
		for (int i = l; i <= r; i++)
		{
			if (a[i] > max)
				max = a[i];
			if (a[i] < min)
				min = a[i];
		}
		return max - min == r - l;
	}
}

⭐ 思路
第一层循环是i,从1到n枚举每个元素;
第二层循环是j,从i逆序枚举每个(j ~ i)的区间。

🤠 DP代码

import java.util.Scanner;

public class Main
{

	static int mod = 1000000007;
	static int res = 0;
	static int[] f, a;

	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		a = new int[n + 1];
		f = new int[n + 1];
		for (int i = 1; i <= n; i++)//下标从1开始
			a[i] = sc.nextInt();

		f[0] = 1;
		for (int i = 1; i <= n; i++)//枚举区间终点
		{
			int min = Integer.MAX_VALUE;
			int max = Integer.MIN_VALUE;

			for (int j = i; j > 0; j--)//枚举最后一个区间的起点
			{
				min = Math.min(min, a[j]);
				max = Math.max(max, a[j]);
				if (i - j == max - min)
					f[i] = (f[i] + f[j - 1]) % mod;
			}
		}

		System.out.println(f[n]);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OBCP第七章 OB迁移-备份恢复技术架构及操作方法

为什么需要备份恢复 为满足监管要求 防止管理员误操作后&#xff0c;错误数据同步到所有副本&#xff0c;导致数据无法恢复 防止数据库因各种故障而造成数据丢失&#xff0c;降低灾难性数据丢失的风险&#xff0c;从而达到灾难恢复的目的 硬盘驱动器损坏 黑客攻击、病毒 …

九龙证券|券商积极布局A股 新进171家公司前十大流通股东

随着上市公司2022年年报连续出炉&#xff0c;券商自营盘的操作途径同步浮现。Choice数据显示&#xff0c;到4月4日&#xff0c;券商新进171家上市公司前十大流通股东之列&#xff0c;有48家上市公司获加仓。从装备方向来看&#xff0c;制造业、非银金融、电子、电力设备等板块依…

【电源专题】充电过程中指示灯怎么就红绿闪烁或是同时亮

本案例是在工作中发现的,同事测试的时候发现产品充电时指示灯红绿闪烁。正常的表现应该是充电为红灯,充满为绿灯。怎么会出现红绿闪烁的情况呢? 首先前提条件是产品已经量产,并且出货数量巨大,因此是否为个例性问题?通过排查后发现,最终现象是跟着充电器走,使用正常产品…

chatGPT的未来应用有哪些-ChatGPT对未来工作的影响

ChatGPT对未来的影响 ChatGPT 是一种先进的自然语言处理技术&#xff0c;能够处理和理解大量的自然语言数据和信息&#xff0c;具有广泛的应用价值。以下是 ChatGPT 可能对未来的影响&#xff1a; 改变人与计算机的交互方式。ChatGPT 的普及应用&#xff0c;将使得人们可以通过…

聊聊移动端动态化的由来和各流派的优缺点

移动端动态化的由来 “动态化”并不是最近几年才产生的名词&#xff0c;而是从从互联网诞生的初期&#xff0c;这个词就已经出现了。大家所认知的早期互联网&#xff0c;其实就是各种各类的“动态网站”&#xff0c;内容数据和页面外观都不是固定的&#xff0c;都是随着服务器…

命名空间和程序集

目录 一、什么是命名空间 1. 命名空间的作用 2. 命名空间跨文件伸展 3.嵌套命名空间 二、using指令 1. using命名空间指令 2. using别名指令 三、程序集的结构 1. 程序集标识符 2.强命名程序集 一、什么是命名空间 1. 命名空间的作用 命名空间是共享命名空间名的一组…

kotlin协程原理分析

使用kotlin的协程一段时间后&#xff0c;我们或多或少会产生一些疑问&#xff1a;协程和线程有什么关系&#xff1f;协程之间到底怎么来回传递的&#xff1f;协程真的比线程&#xff08;池&#xff09;好吗&#xff1f; 初窥 首先我们从最简单协程开始&#xff1a; fun main…

XXX客户挖矿应急响应

此次为真实客户案例! 0x01 前言: 同事反馈,有客户设备告警连接挖矿域名。 0x02 事件分析: 登录设备TOP: CPU巨高!!查。 定位进程: 通过netstat -anop 查看可疑进程: 通过netstat -anop | grep 28564 查看对应进程:

初始Vue【Vue】

Vue 简介 1. Vue是什么&#xff1f; 一套用于构建用户界面的渐进式JavaScript框架 渐进式&#xff1a;Vue可以自底向上逐层的应用 简单应用&#xff1a;只需一个轻量小巧的核心库 复杂应用&#xff1a;可以引入各式各样的Vue插件 2. Vue 的特点 采用组件化的模式&#xff0c…

JVM七大垃圾回收器上篇Serial、ParNeW、Parallel Scavenge、 Serial Old、 Parallel Old、 CMS、 G1

GC逻辑分类 垃圾收集器没有在规范中进行过多的规定&#xff0c;可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中&#xff0c;因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器&#xff0c;可以将GC分为不同的类型。 按线程数…

Linux学习记录——십칠 基础IO(2)

文章目录理解文件系统1、了解磁盘物理结构2、逻辑抽象3、文件系统如何理解文件的增删查改4、软硬连接1、软链接2、硬链接3、继续深入理解文件系统 之前已经知道&#xff0c;文件在没被打开的时候&#xff0c;会存放在磁盘等外设中&#xff0c;这篇的重点就是这些没被打开的文件…

JSON 数据解析的方法

JSON 数据解析 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式&#xff0c;但是也使用了类似于C语言家族的习惯&#xff08;包括C、C、C#、Java、JavaScript、Perl、Python等&#xff09;。这…

百度文心一言与Notion的比较(机器人通信的例子)

文心一言出来有一段时间了&#xff0c;也经常会去问问&#xff0c;感觉对于简单的语义理解还是可以&#xff0c;其答案对于一些常见的常识等还是可以给出不错的答案&#xff0c;但是在数学与代码等方面基本上很差&#xff0c;基本的贷款利率、微积分、没有理解语义的代码等都是…

CSDN——Markdown编辑器——快捷键

CSDN——Markdown编辑器——快捷键CSDN——Markdown编辑器——快捷键如下4个&#xff0c;同 word下面的需要加 Shift标题 Ctrl /⌘Shift H // headlineF 和 G在键盘相邻快捷键 的 图标![在这里插入图片描述](https://img-blog.csdnimg.cn/dc02416cebd34c428de54aba5e66c40a.png…

蓝桥杯 --- 数学与简单DP

蓝桥杯 --- 数学与简单DP数学1205. 买不到的数目1211. 蚂蚁感冒1216. 饮料换购简单DP2. 01背包问题1015. 摘花生895. 最长上升子序列数学 1205. 买不到的数目 小明开了一家糖果店。 他别出心裁&#xff1a;把水果糖包成4颗一包和7颗一包的两种。 糖果不能拆包卖。 小朋友来…

springcloud:xxl-job的任务触发机制及调度过期策略

0.引言 我们都会用xxl-job&#xff0c;但很少有人能够说清楚xxl-job的任务触发机制&#xff0c;面临任务阻塞、服务重启如何处理任务&#xff0c;本期我们就来一起看看xxl-job的任务触发机制 1. 调度过期策略 我们在配置策略时可以看到有一个调度过期策略配置&#xff0c;也…

二叉树的四种遍历方式以及必备的面试题(附图解)

二叉树的四种遍历方式以及必备的面试题 文章目录二叉树的四种遍历方式以及必备的面试题前言一、构建一个二叉树二、四种遍历方式1.前序遍历2.中序遍历3.后序遍历附加: 前三种遍历对比图4.层序遍历三、四种遍历相关的面试题1.第一题&#xff1a;144. 二叉树的前序遍历(1)题目&am…

LeetCode.每日一题 831. 隐藏个人信息

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

C语言函数:内存函数memcmp()

wpC语言函数&#xff1a;内存函数memcmp()以及函数实现与使用。 memcmp()&#xff1a; 头文件:#include <string.h> 作用&#xff1a; 进行内存比较。 参数&#xff1a; 解释&#xff1a;ptr1和ptr2是指针&#xff0c;从这个两个指针开始往后num个字节&#xff0c;将两…

【Python入门第四十六天】Python丨NumPy 数组重塑

数组重塑 重塑意味着更改数组的形状。 数组的形状是每个维中元素的数量。 通过重塑&#xff0c;我们可以添加或删除维度或更改每个维度中的元素数量。 从 1-D 重塑为 2-D 实例 将以下具有 12 个元素的 1-D 数组转换为 2-D 数组。 最外面的维度将有 4 个数组&#xff0c;…