树形dp问题套路

news2024/10/6 14:54:26

请添加图片描述
⭐️前言⭐️

本篇文章旨在将二叉树中的树形dp问题模板化,借助信息体传递的方式,通解树形dp问题。

🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅递归套路
  • 🍅判断二叉树是不是平衡二叉树
  • 🍅判断二叉树是不是搜索二叉树
  • 🍅二叉树最大直径
  • 🍅判断二叉树是不是满二叉树
  • 🍅最大二叉搜索树
  • 🍅完全二叉树判断套路版
  • 🍅最大二叉搜索树的头节点
  • 🍅最低公共祖先
  • 🍅派对的最大快乐值

🍅递归套路

介绍二叉树的递归套路
1)假设以X节点为头,假设可以向X左树和X右树要任何信息
2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要)
3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息
4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S
5)递归函数都返回S,每一棵子树都这么要求
6)写代码,在代码中考虑如何把左树的信息和右树信息整合出整棵树的信息

🍅判断二叉树是不是平衡二叉树

题目:
给定一棵二叉树的头节点head,返回这棵二叉树是不是平衡二叉树

题解思路:
对于任一节点X,满足以下三个条件,才能保证这棵二叉树是平衡二叉树。
1)X的左树是平衡二叉树
2)X的右树是平衡二叉树
3)|X的左树高度-右树高度|<2

所以需要定义信息体,包含以节点X为头节点的树是否平,以及它的高度两个信息。

代码实现:

public class IsBalanced {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static boolean isBalanced(Node head) {
        return process(head).isBalanced;
    }

    public static class Info {
        public boolean isBalanced;
        public int height;

        public Info(boolean isBalanced, int height) {
            this.isBalanced = isBalanced;
            this.height = height;
        }
    }

    public static Info process(Node x) {
        if(x==null) {
            return new Info(true,0);
        }
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int height=Math.max(leftInfo.height, rightInfo.height)+1;
        boolean isBalanced=true;
        if(!leftInfo.isBalanced||!rightInfo.isBalanced) {
            isBalanced=false;
        }
        if(Math.abs(leftInfo.height- rightInfo.height)>1) {
            isBalanced=false;
        }
        return new Info(isBalanced,height);
    }
}

🍅判断二叉树是不是搜索二叉树

题目:
给定头节点,判断是不是搜索二叉树

题解思路:
每一棵子树,左子树的所有值都比头节点的值小,右子树的所有值都比头节点的值大。
(中序遍历是有序的)
信息体需要包含以下信息:
1、是否是二叉搜索树
2、树上的最大值
3、树上的最小值

判断:
以X为头节点的树
1、左子树是否是搜索二叉树
2、右子树是否是搜索二叉树
3、左子树最大值是否小于X.val
4、右子树最小值是否大于X.val

代码实现:

public class IsBST {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static class Info {
        public boolean isBST;
        public int max;
        public int min;

        public Info(boolean isBST, int max, int min) {
            this.isBST = isBST;
            this.max = max;
            this.min = min;
        }
    }

    public static boolean isBST(Node head) {
        if(head==null) {
            return true;
        }
        return process(head).isBST;
    }
    
    public static Info process(Node x) {
        if(x==null) return null;
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int max=x.value;
        if (leftInfo != null) {
            max = Math.max(max, leftInfo.max);
        }
        if (rightInfo != null) {
            max = Math.max(max, rightInfo.max);
        }
        int min = x.value;
        if (leftInfo != null) {
            min = Math.min(min, leftInfo.min);
        }
        if (rightInfo != null) {
            min = Math.min(min, rightInfo.min);
        }
        boolean isBST=true;
        if(leftInfo!=null&& !leftInfo.isBST) {
            isBST=false;
        }
        if(rightInfo!=null&&!rightInfo.isBST) {
            isBST=false;
        }
        if(leftInfo!=null&&leftInfo.max>=x.value) {
            isBST=false;
        }
        if(rightInfo!=null&& rightInfo.min<=x.value) {
            isBST=false;
        }
        return new Info(isBST,max,min);
    }
}

🍅二叉树最大直径

题目:
给定一棵二叉树的头节点head,任何两个节点之间都存在距离,返回整棵二叉树的最大距离

题解思路:
对于任一节点X,以X为头节点的二叉树的最大距离有以下三种可能:
1、X左树的最大距离(不经过X)
2、X右树的最大距离(不经过X)
3、X左树与X最远的距离+X右树与X最远的距离+1(左树或右树与X的最大距离就是树的高度)

所以信息体需要包含以下内容:
1、最大距离
2、树的高度

代码实现:

import java.util.ArrayList;

public class MaxDistance {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static class Info {
        public int maxDistance;
        public int height;

        public Info(int maxDistance, int height) {
            this.maxDistance = maxDistance;
            this.height = height;
        }
    }
    
    public static int maxDistance(Node head) {
        return process(head).maxDistance;
    }
    public static Info process(Node x) {
        if(x==null) {
            return new Info(0,0);
        }
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int height=Math.max(leftInfo.height, rightInfo.height)+1;
        int p1=leftInfo.maxDistance;
        int p2=rightInfo.maxDistance;
        int p3= leftInfo.height+ rightInfo.height+1;
        int maxDistance=Math.max(Math.max(p1,p2),p3);
        return new Info(maxDistance,height);
    }
}

🍅判断二叉树是不是满二叉树

题目:
给定一棵二叉树的头节点head,判断这棵二叉树是不是满二叉树

题解思路:
满二叉树的高度为h,则节点数为2^h-1.
所以定义的信息体包含两个信息(高度和节点数)
返回头节点的信息体就能判断该二叉树是不是满二叉树。

代码实现:

public class IsFull {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }
    
    public static class Info {
        public int height;
        public int nodes;

        public Info(int height, int nodes) {
            this.height = height;
            this.nodes = nodes;
        }
    }
    
    public static boolean isFull(Node head) {
        if(head==null) {
            return true;
        }
        Info all=process(head);
        return (1<< all.height)-1== all.nodes;
    }
    
    public static Info process(Node head) {
        if(head==null) {
            return new Info(0,0);
        }
        Info leftInfo=process(head.left);
        Info rightInfo=process(head.right);
        int height=Math.max(leftInfo.height, rightInfo.height)+1;
        int nodes= leftInfo.nodes+ rightInfo.nodes;
        return new Info(height,nodes);
    }
}

🍅最大二叉搜索树

题目:
给定一棵二叉树的头节点head,返回这颗二叉树中最大的二叉搜索子树的大小

题解思路:
求最大二叉搜索树,当X节点不做头时,有两种可能:
1、X左子树的最大二叉搜索树大小
2、X右子树的最大二叉搜索树大小
当X节点做头时,需要知道以下三个信息:
1、X左树是否是BST X右树是否是BST
2、X左树的max是否小于X.val X右树的min是否大于X.val
3、X左树的size +X右树的size+1

得到信息体即包含以下信息:
1、最大二叉搜索子树大小
2、树上max
3、树上min
4、整棵树的size
5、是否是BST(该条件可以省略,如果1 == 4即可得到5)

代码实现:

public class MaxSubBST {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static class Info {
        public int maxSubBSTHead;
        public int size;
        public int max;
        public int min;

        public Info(int maxSubBSTHead, int size, int max, int min) {
            this.maxSubBSTHead = maxSubBSTHead;
            this.size = size;
            this.max = max;
            this.min = min;
        }
    }

    public static Info process(Node x) {
        if(x==null) {
            return null;
        }
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int max=x.value;
        int min=x.value;
        int size=1;
        if(leftInfo!=null) {
            max=Math.max(max, leftInfo.max);
            min=Math.min(min, leftInfo.min);
            size+= leftInfo.size;
        }
        if(rightInfo!=null) {
            max=Math.max(max, rightInfo.max);
            min=Math.min(min, rightInfo.min);
            size+= rightInfo.size;
        }
        int p1=-1;
        if(leftInfo!=null) {
            p1=leftInfo.maxSubBSTHead;
        }
        int p2=-1;
        if(rightInfo!=null) {
            p2=rightInfo.maxSubBSTHead;
        }
        int p3=-1;
        boolean leftBST=leftInfo==null?true:(leftInfo.maxSubBSTHead== leftInfo.size);
        boolean rightBST=rightInfo==null?true:(rightInfo.maxSubBSTHead== rightInfo.size);
        if(leftBST&&rightBST) {
            boolean leftMaxLessX=leftInfo==null?true:(leftInfo.max<x.value);
            boolean rightMinMoreX=rightInfo==null?true:(x.value< rightInfo.min);
            if(leftMaxLessX&&rightMinMoreX) {
                p3=size;
            }
        }
        return new Info(Math.max(p1,Math.max(p2,p3)),size,max,min);
    }
}

🍅完全二叉树判断套路版

题目:
判断二叉树是不是完全二叉树(一般方法解决、递归套路解决)
题解思路:
对于以节点X为头节点的二叉树,有以下四种可能,可以使得该二叉树为完全二叉树。
1)左树满,右树满,左树高度 == 右树高度
2)左树是完全二叉树,右树满,左树高度 == 右树高度+1
3)左树满,右树满,左高 == 右高+1
4)左树满。右树是完全二叉树,左高 == 右高

所以定义信息体,需要包含以下信息:
1、是否满
2、是否是完全二叉树
3、高度
代码实现:

public class IsCBT {
    public static class TreeNode {
        public int val;
        public TreeNode left;
        public TreeNode right;

        public TreeNode(int val) {
            this.val = val;
        }
    }

    public static class Info {
        public boolean isFull;
        public boolean isCBT;
        public int height;

        public Info(boolean isFull, boolean isCBT, int height) {
            this.isFull = isFull;
            this.isCBT = isCBT;
            this.height = height;
        }
    }
    
    public static Info process(TreeNode x) {
        if(x==null) {
            return new Info(true,true,0);
        }
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int height=Math.max(leftInfo.height,rightInfo.height)+1;
        boolean isFull= leftInfo.isFull&& rightInfo.isFull&&leftInfo.height== rightInfo.height;
        boolean isCBT=false;
        if(leftInfo.isFull&& rightInfo.isFull&&leftInfo.height== rightInfo.height) {
            isCBT=true;
        }else if(leftInfo.isCBT&& rightInfo.isFull&&leftInfo.height== rightInfo.height+1) {
            isCBT=true;
        }else if (leftInfo.isFull&& rightInfo.isFull&&leftInfo.height== rightInfo.height+1) {
            isCBT=true;
        }else if(leftInfo.isFull&&rightInfo.isCBT&&leftInfo.height== rightInfo.height) {
            isCBT=true;
        }
        return new Info(isFull,isCBT,height);
    }
}

🍅最大二叉搜索树的头节点

给定一棵二叉树的头节点head,返回这颗二叉树中最大的二叉搜索子树的头节点
题解思路:
求最大二叉搜索树的头节点,对于任一节点X来说,有以下两种情况。
1、与X无关(即X不是最大二叉搜索树的头节点)
1)X左树的最大二叉搜索树的头节点
2)X右树的最大二叉搜索树的头节点

2、与X有关(即X为最大二叉搜索树的头节点),那么需要以下条件
1)左树、右树为二叉搜索树
2)左树最大值<X.val 右树最小值>X.val
3)该树的大小

所以信息体需包含以下信息:
1)最大二叉搜索树的头节点
2)最大二叉搜索树的节点个数
3)max
4)min

代码实现:

public class MaxSubBSTHead {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static class Info {
        public Node maxSubBSTHead;
        public int maxSubBSTSize;
        public int max;
        public int min;

        public Info(Node maxSubBSTHead, int maxSubBSTSize, int max, int min) {
            this.maxSubBSTHead = maxSubBSTHead;
            this.maxSubBSTSize = maxSubBSTSize;
            this.max = max;
            this.min = min;
        }
    }

    public static Info process(Node x) {
        if(x==null) return null;
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        int max=x.value;
        int min=x.value;
        Node maxSubBSTHead=null;
        int maxSubBSTSize=0;
        if(leftInfo!=null) {
            max=Math.max(max, leftInfo.max);
            min=Math.min(min, leftInfo.min);
            maxSubBSTHead=leftInfo.maxSubBSTHead;
            maxSubBSTSize= leftInfo.maxSubBSTSize;
        }
        if(rightInfo!=null) {
            max=Math.max(max, rightInfo.max);
            min=Math.min(min, rightInfo.min);
            if(rightInfo.maxSubBSTSize>maxSubBSTSize) {
                maxSubBSTHead=rightInfo.maxSubBSTHead;
                maxSubBSTSize= rightInfo.maxSubBSTSize;
            }
        }
        if((leftInfo==null?true:(leftInfo.maxSubBSTHead ==x.left&&leftInfo.max<x.value))&&
                (rightInfo==null?true:(rightInfo.maxSubBSTHead==x.right&&rightInfo.min>x.value))) {
            maxSubBSTHead=x;
            maxSubBSTSize=(leftInfo==null?0: leftInfo.maxSubBSTSize)+(rightInfo==null?0: rightInfo.maxSubBSTSize)+1;
        }
        return new Info(maxSubBSTHead,maxSubBSTSize,max,min);
    }
}

🍅最低公共祖先

题目:
给定一棵二叉树的头节点head,和另外两个节点a和b,返回a和b的最低公共祖先
题解思路:
对于任一节点X,就找X是否是a、b最低公共祖先即可。
1)与X无关(X不是最低汇聚点)
1.左树有答案
2.右树有答案
3.a、b不都在X为头节点的子树上

2)X是答案
1.左右子树a、b各一个
2.X是a,b在左子树或者右子树
3.X是b,a在左子树或者右子树

信息体包含:
1.a是否在树上
2.b是否在树上
3.最低公共祖先节点

代码实现:

public class LowestAncestor {
    public static class Node {
        public int value;
        public Node left;
        public Node right;

        public Node(int value) {
            this.value = value;
        }
    }

    public static Node lowestAncestor(Node head,Node a,Node b) {
        return process(head,a,b).ans;
    }

    public static class Info {
        public boolean findA;
        public boolean findB;
        public Node ans;

        public Info(boolean findA, boolean findB, Node ans) {
            this.findA = findA;
            this.findB = findB;
            this.ans = ans;
        }
    }

    public static Info process(Node x,Node a,Node b) {
        if(x==null) {
            return new Info(false,false,null);
        }
        Info leftInfo=process(x.left,a,b);
        Info rightInfo=process(x.right,a,b);
        boolean findA=(x==a)|| leftInfo.findA|| rightInfo.findA;
        boolean findB=(x==b)|| leftInfo.findB|| rightInfo.findB;
        Node ans=null;
        if(leftInfo.ans!=null) {
            ans=leftInfo.ans;
        }else if(rightInfo.ans!=null) {
            ans=rightInfo.ans;
        }else {
            if(findA&&findB) {
                ans=x;
            }
        }
        return new Info(findA,findB,ans);
    }
}

🍅派对的最大快乐值

题目:
员工信息的定义如下:
class Employee {
public int happy; // 这名员工可以带来的快乐值
List subordinates; // 这名员工有哪些直接下级
}
公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、 没有环的多叉树
树的头节点是公司唯一的老板,除老板之外的每个员工都有唯一的直接上级
叶节点是没有任何下属的基层员工(subordinates列表为空),除基层员工外每个员工都有一个或多个直接下级
这个公司现在要办party,你可以决定哪些员工来,哪些员工不来,规则:
1.如果某个员工来了,那么这个员工的所有直接下级都不能来
2.派对的整体快乐值是所有到场员工快乐值的累加
3.你的目标是让派对的整体快乐值尽量大
给定一棵多叉树的头节点boss,请返回派对的最大快乐值。
题解思路:
对于任一节点X,若想求最大快乐值,有以下两种情况:
1、X来,则X.happy+所有直系子节点不来的maxHappy
2、X不来,则0+所有直系字节的来与不来两种情况下获得的maxHappy

则得到信息体包含以下信息:
X来的情况下的maxHappy
X不来的情况下的maxHappy

代码实现:

public class MaxHappy {
    public static class Employee {
        public int happy;
        public List<Employee> nexts;

        public Employee(int happy) {
            this.happy = happy;
            this.nexts = new ArrayList<>();
        }
    }

    public static int maxHappy(Employee boss) {
        Info allInfo=process(boss);
        return Math.max(allInfo.no, allInfo.yes);
    }

    public static class Info {
        public int no;
        public int yes;

        public Info(int no, int yes) {
            this.no = no;
            this.yes = yes;
        }
    }
    
    public static Info process(Employee x) {
        if(x==null) {
            return new Info(0,0);
        }
        int no=0;
        int yes=x.happy;
        for (Employee next:x.nexts) {
            Info nextInfo=process(next);
            no+=Math.max(nextInfo.no, nextInfo.yes);
            yes+=nextInfo.no;
        }
        return new Info(no,yes);
    }
}

⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双目测距联合YOLOv8 项目总结

代码贴&#xff1a;双目测距--5 双目相机 联合 YOLOv8_爱钓鱼的歪猴的博客-CSDN博客 1、单目标定&#xff08;张友正标定法&#xff09; 获得左相机、右相机的cameraMatrix&#xff08;内部参数值&#xff09;、disCoeffs(畸变矩阵) 2、双目标定 固定左右相机的内部参数值、…

File类和IO流的相关面试(二)

一.IO流 1.什么是IO? I&#xff1a;Input&#xff0c;数据的读取&#xff0c;数据的输入 数据的输入&#xff0c;可以是从键盘输入&#xff0c;从文件读取&#xff0c;从网络接收... O&#xff1a;Output&#xff0c;写数据&#xff0c;数据的输出 数据的输出&#xff0c;可…

C++服务器框架开发2——头文件memory/typedef

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见&#xff1a;[C高级教程]从零开始开发服务器框架(sylar) 上一篇&#xff1a;C服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once C服务器框架开发2——头文件memory/typedef 目前进度memoryty…

C4D R26 渲染学习笔记 建模篇(1):参数模型

往期文章 介绍篇 C4D R26 渲染学习笔记&#xff08;1&#xff09;&#xff1a;C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记&#xff08;2&#xff09;&#xff1a;渲染流程介绍 C4D R26 渲染学习笔记&#xff08;3&#xff09;&#xff1a;物体基本操作快捷键 建模篇 …

JVM内存结构介绍

我们都知道&#xff0c;Java代码是要运行在虚拟机上的&#xff0c;而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域&#xff0c;这些区域都有各自的用途。其中有些区域随着虚拟机进程的启动而存在&#xff0c;而有些区域则依赖用户线程的启动和结束…

[Data structure]栈

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现&#xff0c;有时候有C/C代码。 ⭐如果觉得文章写的…

一文学会随机森林在sklearn中的实现

1 概述 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通 过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在 现实中集成学习也有相当大的作用,它可以用来做市场…

8、URP自定义屏幕后处理

回到目录 大家好&#xff0c;我是阿赵。这次来说一下URP渲染管线里面怎样使用后处理效果&#xff0c;还有怎样去自定义后处理效果。 一、使用URP自带的后处理效果 要使用URP自带的后处理效果&#xff0c;方法很简单&#xff0c;和Unity内置渲染管线的PostProcessing后处理很…

深度学习实战——不同方式的模型部署(CNN、Yolo)

忆如完整项目/代码详见github&#xff1a;https://github.com/yiru1225&#xff08;转载标明出处 勿白嫖 star for projects thanks&#xff09; 目录 系列文章目录 一、实验综述 1.实验工具及及内容 2.实验数据 3.实验目标 4.实验步骤 二、ML/DL任务综述与模型部署知识…

python:容器:列表——常用操作

列表.append(元素)向列表中追加一个元素列表.extend(容器)将数据容器的内容依次取出&#xff0c;追加到列表尾部列表.insert(下标,元素)在指定下标处&#xff0c;插入指定的元素del 列表[下标]删除列表指定的下标元素列表.pop(下标)删除列表指定的下标元素列表.remove(元素)从前…

【LeetCode热题100】打卡第3天:无重复字符的最长子串

文章目录 无重复字符的最长子串⛅前言&#x1f512;题目&#x1f511;题解 无重复字符的最长子串 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&…

【高数+复变函数】傅里叶变换的性质

文章目录 【高数复变函数】傅里叶变换的性质一、常见性质1.1 线性性质1.2 位移性质1.3 微分性质1.4 积分性质1.5 乘积定理1.6 能量积分 二、卷积2.1 卷积运算2.2 运算应用2.3 卷积定理 三、相关函数 【高数复变函数】傅里叶变换的性质 上一节&#xff1a;【高数复变函数】傅里…

2.labelme转yolo格式和MS COCO格式

2.labelme转yolo格式和MS COCO格式 2.1 数据集划分 import os import random import shutildef moveimg(fileDir, tarDir):pathDir os.listdir(fileDir) # 取图片的原始路径filenumber len(pathDir)rate 0.01 # 自定义抽取图片的比例&#xff0c;比方说100张抽10张&…

Verilog 基础知识

文章目录 Verilog 简单介绍数据类型介绍变量运算符及表达式非阻塞赋值和阻塞赋值条件语句循环语句顺序块和并行块结构说明语句assign 语句打印信息宏定义 Verilog 简单介绍 Verilog HDL是硬件描述语言的一种&#xff0c;用于数字电子系统设计。该语言允许设计者进行各种级别的…

Verilog | FIFO简单实现

FIFO( First Input First Output)简单说就是指先进先出&#xff0c;也是缓存机制的一种&#xff0c;下面是我总结的 FIFO 的三大用途&#xff1a; 1)提高传输效率&#xff0c;增加 DDR 带宽的利用率。比如我们有 4 路视频数据缓存到 DDR 中去&#xff0c;比较笨的方法是&#x…

SpringBoot毕业设计40个项目分享(源码+论文)(一)

文章目录 前言 课题1 : 基于SSM与VUE的旅游信息分享管理平台 <br /> 课题2&#xff1a;基于SSMVUE的中医商城管理系统 <br /> 课题3 : 基于SSM的汽车租赁系统<br /> 课题4 : 基于SSM与VUE的汉服销售论坛系统 <br /> 课题5 : 基于SSM的疫情校园师生登记…

java boot项目配置方式优先级

java boot项目认识一下三种格式的配置文件 中 我们说的 boot项目中支持三种配置文件格式 分别是 application.properties application.yml application.yaml 其中 我们也说推荐大家用application.yml格式的 那么 问题就来了 如果三个文件都存在于 resources目录下 系统会听谁的…

继电器相关知识

这个就是继电器&#xff0c;左边有三个接口&#xff0c;VCC(3.3v),GND,IO右面有COM,NO,NC。左侧的IO口如果接受到低电平&#xff0c;继电器内部线圈就会工作&#xff0c;然后供电&#xff0c;开关由NC端闭合到NO端&#xff0c;NO开始闭合&#xff0c;例如&#xff1a;可以将喇叭…

Real-Time C++ 嵌入式C++ 程序设计(三)

翻译自 Real-Time C Efficient Object-Oriented and Template Microcontroller Programming 4th Edition - Kormanyos, Christopher&#xff0c;这书涉及了从C11 到C20 的内容&#xff0c;主要介绍使用C 的模板、面向对象等特性设计嵌入式程序。书里的示例代码都是公开的&#…

ChatGPT报错:Sorry, you have been blocked解决方法

今天打开ChatGPT&#xff0c;发现再一次报错了&#xff01; 又一次出问题了。。。。。。。无语&#xff01; 原因分析 1、内容过滤&#xff1a;某些平台或网站可能使用内容过滤系统&#xff0c;该系统可能将AlI语言模型视为潜在的风险&#xff0c;从而对其进行封锁或限制。这…