当前位置: 首页 > news >正文

动态规划问题

目录

一、动态规划简介

二、利用动态规划解决问题 

1、斐波拉契序列

2、拆分词句

3、三角形最小路径和 

4、不同的路径数目(一) 

5、带权值的最小路径和 

6、求路径ii 

7、01背包 

8、不同子序列 

9、编辑距离 

10、分割回文串


一、动态规划简介

动态规划就是分治思想的延伸,通俗来讲就是大事化小,小事化了。

在将大问题划分为小问题的分治过程中,将小问题的处理结果进行保存以便后面处理大问题时使用到这些结果。

动态规划具有三个特点:

  • 将原来的问题分解成几个相似的子问题。
  • 所有的子问题只需要解决一次。
  • 存储子问题的解。

动态规划的本质:状态的定义和状态方程的定义。

动态规划问题的四个要素:

  • 状态的定义。
  • 状态间的转移方程的定义。
  • 状态的初始化。
  • 返回结果。

定义的状态之间要形成递推关系。

动态规划问题的使用场景:求最值、可不可行、是不是、求方案的个数。

二、利用动态规划解决问题 

1、斐波拉契序列

题目链接:斐波拉契数列

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。

题目分析:

  • 状态的定义:F(i) 表示斐波拉契数列的第i项。
  • 状态间的转移方程:F(i) = F(i-1)+F(i-2)。
  • 初始化:F(1) = 1,F(2) = 1。
  • 返回值:F(n)。

代码实现: 

public int Fibonacci(int n) {int[] fib = new int[n+1];fib[1] = 1;fib[2] = 1;for(int i = 3;i <= n;i++){fib[i] = fib[i-1] + fib[i-2];}return fib[n];}

 

2、拆分词句

题目链接:拆分词句

给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。

例如:
给定s=“nowcode”;
dict=["now", "code"].
返回true,因为"nowcode"可以被分割成"now code".

题目分析:

要判断分割的单词序列是否都是dict中的单词,因为分割是从前往后进行分割,那么我们就可以给每个字符设置出一个状态true表示可以分割,如果子状态canSplit[j]为true,也就是前面一部分在dict中,那么判断后面j~i是否为dict中的元素,如果是就将canSplit[i]置为true继续向后判断,由于要判断这个s分割的单词都在dict中,所以就创建canSplit数组时需要增加一个元素canSplit[s.length()]来表示,还有一个特殊情况:如果仅仅分割s的第一个字符为dict中的元素,那么其子问题的状态怎么设定?所以就将canSplit[0]=true,表示0下标之前的状态为true,综上利用动态规划可以分析出:

  • 状态的定义 :canSplit[i]:表示该字符对应的下标是否可以拆分
  • 状态间转移方程的定义:j<i&&canSplit[i]=true&&dict.contains(subString(j,i))
  • 状态初始化:canSplit[0]=true
  • 返回结果:canSplit[字符串长度]的状态,表示整个字符串分割的单词是都在dict中。

代码实现:

public boolean wordBreak(String s, Set<String> dict) {if(s == null || dict == null){return false;}boolean[] canSplit = new boolean[s.length()+1];canSplit[0] = true;for(int i = 1;i <= s.length();i++){for(int j = 0;j < i;j++){if(canSplit[j]&&dict.contains(s.substring(j,i))){canSplit[i] = true;}}}return canSplit[s.length()];}

3、三角形最小路径和 

题目链接:三角形最小路径和

给定一个正三角形数组,自顶到底分别有 1,2,3,4,5...,n 个元素,找出自顶向下的最小路径和。每一步只能移动到下一行的相邻节点上,相邻节点指下行种下标与之相同或下标加一的两个节点。

例如当输入[[2],[3,4],[6,5,7],[4,1,8,3]]时,对应的输出为11,

所选的路径如下图所示:

题目分析: 

要求从三角形的顶点到底部的最小路径,那么就需要求出其上层的最小路径,假设F(i,j)表示到结点的最小路径,如果该结点是最短路径上的点就直接将该点的值修改为顶点到该点的最小路径和,就不用再开辟新的空间了,又由于每一步只能移动到下一行的相邻节点上,所以结点(i,j)的最短路径F(i,j)=min(F(i-1,j)+F(i-1,j-1)),但是对于三角形两个边上的点其上层的最小路径只需加上其上层的一个点:如果j=0,F(i,j)=F(i-1,j);如果i=j,F(i,j)=F(i-1,j),于是就利用动态规划分析得出:

  • 状态的定义:F(i,j):到结点(i,j)的最小路径和(包含结点(i,j)的值)
  • 状态间转移方程的定义:F(i,j)=min(F(i-1,j)+F(i-1,j-1)),如果j=0,F(i,j)=F(i-1,j);如果i=j,F(i,j)=F(i-1,j)
  • 状态初始化:F(0,0)=val((0,0)结点的值)
  • 返回值:min(F(底部结点))

代码实现:

public int minTrace (int[][] triangle) {if(triangle == null){return 0;}int row = triangle.length;for(int i = 1;i < row;i++){for(int j = 0;j <= i;j++){if(j == 0){triangle[i][j] += triangle[i-1][j];}else if( j == i){triangle[i][j] += triangle[i-1][j-1];}else{triangle[i][j] += Math.min(triangle[i-1][j-1],triangle[i-1][j]);}}}int min=triangle[row-1][0];for(int i = 1;i < triangle[row - 1].length;i++){if(triangle[row - 1][i] < min){min = triangle[row -1][i];}}return min;}

上述思路是从顶点到点(i,j)的最短路径,那么也可以从点(i.j)到顶点的最短路径,就从倒数第二层开始遍历,那么利用动态规划分析可得:

  • 状态的定义:F(i,j) 为底部到点(i,j)的最短路径。
  • 状态间转移方程的定义:F(i,j)=min(F(i+1,j)+F(i+1,j+1))。
  • 状态初始化:F(i,j)=triangle(i,j)。
  • 返回值:F(0,0)。

代码实现:

public int minTrace (int[][] triangle) {if(triangle == null){return 0;}int rows = triangle.length;for(int i = rows - 2;i >= 0;i--){for(int j = 0; j <= i;j++){triangle[i][j] += Math.min(triangle[i+1][j+1],triangle[i+1][j]);}}return triangle[0][0];}

4、不同的路径数目(一) 

题目链接:不同的路径数目(一)

一个机器人在m×n大小的地图的左上角(起点)。

机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。

可以有多少种不同的路径从起点走到终点?

备注:m和n小于等于100,并保证计算结果在int范围内

题目分析: 

由于机器人每次可以向下或向右移动,对于到达第一行和第一列的点只有一种路径,经过分析到达其他点的路径方案为左边点的路径方案数和上边点的路径方案数之和。所以利用动态规划分析如下:

  • 状态的定义:F(i,j)表示起点到点(i,j)的路径方案数。
  • 状态间的转移方程:F(i,j) = F(i-1,j) + F(i,j-1)。
  • 状态初始化:F(i,1)=1,F(i,j)=1,到达第一行和第一列的点只有一种路径。
  • 返回值:F(m,n)。

代码实现:

public int uniquePaths (int m, int n) {int[][] path = new int[m+1][n+1];for(int i = 1; i <= n;i++){path[1][i] = 1;}for(int i = 1; i <= m;i++){path[i][1] = 1;}for(int i = 2; i <= m;i++){for(int j = 2;j <= n;j++){path[i][j] = path[i][j-1] + path[i-1][j];}}return path[m][n];}

5、带权值的最小路径和 

题目链接:带权值的最小路径和

给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。
注意:你每次只能向下或向右移动。

题目分析:

利用动态规划分析如下:

  • 状态的定义:F(i,j)表示起点到坐标为(i,j)的最小路径和。
  • 状态间的转移方程:F(i,j) = min(F(i-1,j), F(i,j-1))。
  • 状态初始化:F(i,0) +=F(i-1,0);F(0,j) +=F(0,j-1)第一行和第一列元素进行初始化。
  • 返回值:F(m-1,n-1)。

代码实现:

public int minPathSum (int[][] grid) {int rows = grid.length;int cols = grid[0].length;for(int i = 1; i < rows;i++){grid[i][0] += grid[i-1][0];}for(int i = 1; i < cols;i++){grid[0][i] += grid[0][i-1];}for(int i = 1; i < rows;i++){for(int j =1;j < cols;j++){grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);}}return grid[rows-1][cols-1];}

6、求路径ii 

题目链接:求路径ii

给定一个m*n的地图,其中加入了一些障碍。每次只能向下或者向右走,问从左上角走到右下角有多少不同的路径?

分别用0和1代表空区域和障碍

例如

下图表示有一个障碍在3*3的图中央。

[[0,0,0],[0,1,0],[0,0,0]
]

有2条不同的路径

备注:m和n不超过100.

题目分析:

由动态规划思想分析可得:

  • 状态的定义:F(i,j)表示起点到点(i,j)的路径方案数。
  • 状态间的转移方程:如果obstacleGrid(i,j)=1,F(i,j)=0,否则F(i,j)=F(i-1,j)(j=0),F(i,j)=F(i,j-1)(i=0),F(i,j) = F(i-1,j) + F(i,j-1)(i!=0,j!=0)。
  • 状态初始化:F(0,0)=obstacleGrid(0,0)==1?0:1。
  • 返回值:F(m-1,n-1)。

代码实现:

public static int uniquePathsWithObstacles (int[][] obstacleGrid) {if(obstacleGrid==null)return 0;int i,j;int m=obstacleGrid.length;int n=obstacleGrid[0].length;int[][]f=new int[m][n];if(obstacleGrid[0][0]==1){return 0;}else{f[0][0]=1;}for(i=0;i<m;i++){for(j=0;j<n;j++){if(obstacleGrid[i][j]==1){f[i][j]=0;continue;}if(i==0&&j!=0){f[i][j]=f[i][j-1];}if(i!=0&&j==0){f[i][j]=f[i-1][j];}if(i!=0&&j!=0){f[i][j]=f[i-1][j]+f[i][j-1];}}}return f[m-1][n-1];}

7、01背包 

题目链接:01背包

已知一个背包最多能容纳体积之和为v的物品,现有 n 个物品,第 i 个物品的体积为 vi , 重量为 wi,求当前背包最多能装多大重量的物品?

题目分析:

  • 状态的定义:F(i,j)表示i个物品和体积为j的重量。
  • 状态间的转换方程: 如果空间不足,F(i,j) = F(i-1,j).如果空间充足就要判断是否放入元素取max( F(i-1,j),(F(i-1,j-vi)+wi))。
  • 初始化:第0行和第0列的元素为0,表示未放任何物品和体积为0的情况。
  • 返回值:F(m,n)。

代码实现:

    /*** 计算01背包问题的结果* @param V int整型 背包的体积* @param n int整型 物品的个数* @param vw int整型二维数组 第一维度为n,第二维度为2的二维数组,vw[i][0],vw[i][1]分别描述i+1个物品的vi,wi* @return int整型*/
public static int knapsack (int V, int n, int[][] vw) {int[][] maxValue = new int[n+1][V+1];for(int i = 1; i <= n;i++){for(int j = 1; j <= V;j++){if(j < vw[i-1][0]){maxValue[i][j] = maxValue[i-1][j];}else{maxValue[i][j] = Math.max(maxValue[i-1][j],maxValue[i-1][j-vw[i-1][0]]+vw[i-1][1]);}}}return maxValue[n][V];
}

8、不同子序列 

题目链接:不同的子序列

给定两个字符串S和T,返回S子序列等于T的不同子序列个数有多少个?

字符串的子序列是由原来的字符串删除一些字符(也可以不删除)在不改变相对位置的情况下的剩余字符(例如,"ACE"is a subsequence of"ABCDE"但是"AEC"不是)
例如:

S="nowcccoder", T = "nowccoder"

返回3

题目分析:

  • 状态的定义:dp[i][j]表示以i-1结尾的字符串S等于以j-1结尾的字符串T子序列的个数。
  • 状态间的转移方程:dp[i][j]=(S[i-1]==T[j-1])?(dp[i-1][j-1]+dp[i-1][j]):dp[i-1][j].
  • 初始化:dp[0][j] = 0,表示S字符串为空,dp[i][0] = 1,表示T字符串为空,dp[0][0]=1表示S和T都为空。
  • 返回值:dp[S.length()][T.length()]。

代码实现:

 public int numDistinct (String S, String T) {int lenS = S.length();int lenT = T.length();int[][] dp = new int[lenS+1][lenT+1];for(int i = 0;i <= lenS;i++){dp[i][0] = 1;}for(int i = 1;i <= lenS;i++){for(int j = 1;j <= lenT;j++){if(S.charAt(i-1) == T.charAt(j-1)){dp[i][j] = dp[i-1][j-1] + dp[i-1][j];}else{dp[i][j] = dp[i-1][j];}}}return dp[lenS][lenT];}

9、编辑距离 

题目链接:编辑距离

给定两个单词word1和word2,请计算将word1转换为word2至少需要多少步操作。
你可以对一个单词执行以下3种操作:
a)在单词中插入一个字符
b)删除单词中的一个字符
c)替换单词中的一个字符

题目分析:

  • 状态的定义:dp[i][j]表示前i-1的word1转换为前j-1的word2需要多少步操作。
  • 状态间的转换方程:dp[i][j]=(word1[i-1]==word2[j-1])?dp[i-1][j-1]:(min(dp[i-1][j]+1, dp[i][j-1]+1,dp[i-1][j-1]+1),dp[i-1][j]+1表示删除word1的第i-1个字符,dp[i][j-1]+1表示新增word1的第i-1个字符,dp[i-1][j-1]+1表示替换word1的第i-1个字符。
  • 初始化:dp[0][0] = 0,dp[0][j] = j,dp[i][0] = i。
  • 返回值:p[word1.length()][word2.length()]。

代码实现:

public int minDistance (String word1, String word2) {int len1 = word1.length();int len2 = word2.length();int[][] dp = new int[len1+1][len2+1];for(int i = 1;i <= len1;i++){dp[i][0] = i;}for(int j = 1;j <= len2;j++){dp[0][j] = j;}for(int i = 1;i <= len1;i++){for(int j = 1;j <= len2;j++){if(word1.charAt(i-1) == word2.charAt(j-1)){dp[i][j] = dp[i-1][j-1];}else{int min1 = Math.min(dp[i-1][j-1],dp[i-1][j]);int min2 = Math.min(dp[i][j-1],dp[i-1][j]);dp[i][j] = Math.min(min1,min2) + 1;}}}return dp[len1][len2];}

10、分割回文串

题目链接:分割回文串

给出一个字符串s,分割s使得分割出的每一个子串都是回文串

计算将字符串s分割成回文分割结果的最小切割数

例如:给定字符串s="aab",

返回1,因为回文分割结果["aa","b"]是切割一次生成的。

题目分析:

  • 状态的定义:dp[i]表示到第i个字符分割的次数。
  • 状态间的转移方程:dp[i] = min(dp[i],dp[j]+1)。
  • 初始化:dp[i]表示到第i个字符的最大分割次数。
  • 返回值:dp[s.length()]。
public boolean isPalindrome(String s){int begin = 0;int end = s.length()-1;while(begin < end){if(s.charAt(begin) == s.charAt(end)){begin++;end--;}else{return false;}}return true;}public int minCut (String s) {int len = s.length();int[] dp = new int[len+1];for(int i = 0;i <= len;i++){dp[i] = i-1;}for(int i = 1;i <= len;i++){for(int j = 0;j<i;j++){if(isPalindrome(s.substring(j,i))){dp[i] = Math.min(dp[i],dp[j]+1);}}}return dp[len];}

相关文章:

动态规划问题

目录 一、动态规划简介 二、利用动态规划解决问题 1、斐波拉契序列 2、拆分词句 3、三角形最小路径和 4、不同的路径数目&#xff08;一&#xff09; 5、带权值的最小路径和 6、求路径ii 7、01背包 8、不同子序列 9、编辑距离 10、分割回文串 一、动态规划…...

【MySQL进阶】 存储引擎 索引

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…...

5 款最好的免费 SSD 数据恢复软件

SSD&#xff08;固态硬盘&#xff09;提供比传统硬盘更快的读/写速度&#xff0c;使启动、软件加载和游戏启动更快。因此&#xff0c;在我们选择存储设备时&#xff0c;它是一个极好的选择。但是&#xff0c;它仍然存在数据丢失的风险。假设您是受害者之一&#xff0c;正在寻找…...

MyBatis案例 | 使用映射配置文件实现CRUD操作——删除数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JavaWeb Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&…...

CSDN 编程竞赛二十八期题解

竞赛总览 CSDN 编程竞赛二十八期&#xff1a;比赛详情 (csdn.net) 本期竞赛的题目都很简单&#xff0c;但是非常考验读题和编码速度。这一次没有遇到bug&#xff0c;竞赛体验较好。 竞赛题解 题目1、小Q的鲜榨柠檬汁 团建活动是大家所想要的。小Q给大家准备了鲜橙汁。现在…...

DML数据操纵语言

DML数据操纵语言 目录概述一、插入语句(一)方式一(二)方式二&#xff1a;(三)两种方式的比较二、修改语句三、删除语句概述方式一&#xff1a;delete方式二&#xff1a;truncate语句 【清空语句】delete VS truncate 【面试题&#xff01;&#xff01;&#xff01;】概述 数据…...

【Hello Linux】Linux工具介绍 (gcc/g++ gdb)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍Linux的常用工具gcc/g 以及gbd Linux工具介绍gcc / ggcc / g的作用为什么语言要经过这四步才能变为可执行指令gcc / g语法预处理编…...

TeamFiltration:一款针对O365 AAD账号安全的测试框架

关于TeamFiltration TeamFiltration是一款针对O365 AAD账号安全的跨平台安全测试框架&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松对O365 AAD账号进行枚举、喷射、过滤和后门植入等操作。TeamFiltering与CrackMapExec非常相似&#xff0c;它可以创建并维护一…...

你是真的“C”——Visual Studio 2022(VS2022)编译器 -—实用调试技巧

你是真的“C”——Visual Studio 2022&#xff08;VS2022&#xff09;编译器 -—实用调试技巧&#x1f60e;前言&#x1f64c;1. 什么是bug&#xff1f;&#x1f64c;2. 调试是什么&#xff1f;有多重要&#xff1f;&#x1f64c;2.1 调试是什么&#xff1f;2.2 调试的基本步骤…...

数据结构与算法:7种必须会的排序以及3种非基于比较排序

1.什么是排序 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序…...

数据库用户数

Oracle的用户数 oracle软件内部并没对用户数做限制&#xff0c;买5个用户数&#xff0c;指你买了5个user licences&#xff0c;从法律上只能连5个session&#xff0c;超过5个的连接都是非法的。oracle不给你技术上的限制&#xff0c;可是给你法律上的限制。 一般来讲&#xf…...

nginx如何用html显示多个图片并加入播放链接

需求背景通过nginx来做个点播服务&#xff0c;ffmpeg截取视频中的某一帧作为视频的封面&#xff0c;前端页面展示这个封面&#xff0c;&#xff0c;并链接到对应的视频播放链接&#xff0c;加载播放器进行播放简单介绍一下ffmpeg截取视频中的某一帧的方式截取视频的第一帧&…...

【蓝桥杯集训·每日一题】Acwing 3729. 改变数组元素

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴一维差分区间合并一、题目 1、原题链接 3729. 改变数组元素 2、题目描述 给定一个空数组 V 和一个整数数组 a1,a2,…,an。 现在要对数组 V 进行 n 次操作。 第 i 次操作的…...

springmvc执行流程

文章目录前言一、springMVC请求执行流程二、组件说明以下组件通常使用框架提供实现&#xff1a;总结前言 本篇文章是对springmvc的补充 接上篇文章springmvc入门https://blog.csdn.net/l_zl2021/article/details/127120873 一、springMVC请求执行流程 1.用户发送请求至前端控制…...

SpringMVC(2)

一)接受到JSON格式的数据:使用RequestBody来进行接收 ResponseBody表示的是返回一个非页面的数据 RequestBody表示的是后端要接受JSON格式的数据 一)接收单个格式的JSON格式的数据&#xff0c;我们使用一个对象来进行接收 1)我们之前接受GET请求中的queryString中的参数的时候&…...

Jackson序列化json时null转成空串或空对象

在项目中可能会遇到需要将null转""&#xff0c;可以通过以下方法解决。一&#xff1a;添加JacksonConfig 配置import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.Objec…...

如何将Python的上级目录的文件导入?【from.import】

假如有如下目录&#xff1a; -python ----file1 ---------file1_1 ------------------pfile1_1.py ---------pfile1.py ----file2 ---------pfile2.py ----pfile.py ----data.py 在pfile1_1.py中想要将pfile.py 导入怎么办&#xff1f; 首先将其上级目录添加到系统目…...

Java实现碧蓝航线连续作战

目录一.实现功能二.主要思路三.代码实现四.用exe4j生成.exe程序五.最终效果六.代码开源一.实现功能 主线图作战结束到结算页自动点击再次前往 二.主要思路 判断是否进入了结算界面&#xff1a;记录结算界面某个像素点的RGB值&#xff0c;每隔3秒对这个像素点进行比对 移动鼠标…...

Docker笔记

文章目录1.docker为什么会出现2.docker是什么3.传统虚拟机和容器的对比3.1虚拟机3.2容器虚拟化技术3.3两者对比3.4为什么Docker会比VM虚拟机快&#xff1f;4.docker能干嘛6.docker的应用场景7.docker三要素一&#xff1a;镜像&#xff08;Image&#xff09;二&#xff1a;容器&…...

情人节使用AI TOOL来创建一个甜言蜜语的女伴

一、首先使用chatgpt生成一段情侣间的对话&#xff0c;需要反复几次&#xff0c;达到满意的程度&#xff0c;然后将女方的话归在一起。 这是一个情侣私下谈话的场景&#xff0c;女方表示对男朋友精心准备的情人节安排和礼物表示很满意 二、 打开网站&#xff1a;https://lexic…...

G-GhostNet(IJCV 2022)原理与代码解析

paper&#xff1a;GhostNets on Heterogeneous Devices via Cheap Operationscode&#xff1a;https://github.com/huawei-noah/Efficient-AI-Backbones/blob/master/g_ghost_pytorch/g_ghost_regnet.py前言本文提出了两种轻量网路&#xff0c;用于CPU端的C-GhostNet和用于GPU端…...

Ethercat系列(5)TWcat3激活过程的协议分析(续1)

顺序写系统时间偏移从-》主顺序写时间延迟主-》从从-》主顺序写分布式时钟启动主-》从从-》主读多重写系统时间主-》从从-》主顺序写应用层控制主-》从从-》主顺序读错误计数器主-》从从-》主顺序读应用层状态主-》从从-》主顺序读应用层&#xff0c;广播写错误计数器主-》从从…...

QT入门Input Widgets之QScrollBar

目录 一、界面布局功能 1、界面位置介绍 2、控件界面基本属性 2.1 horizontalScrollBar界面属性 3、样式设置 此文为作者原创&#xff0c;创作不易&#xff0c;转载请标明出处&#xff01; 一、界面布局功能 1、界面位置介绍 QScrollBar主要分为两种&#xff0c;一种垂直…...

【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 之前创作过心脏病预测研究文章如下: 【ML】基于机器学习的心脏病预测研究(附代码和数据集,逻辑回归模型) 【ML】基于机…...

工序排序问题--约翰逊法精讲

什么是约翰逊法?约翰逊法是作业排序中的一种排序方法。选出最短加工时间i*&#xff0c;若最短加工时间有多个&#xff0c;任选1个.若i*出现在机床1&#xff0c;它对应的工件先安排加工&#xff0c;否则放在最后安排&#xff0c;安排后划去该工件,重复上两个步骤&#xff0c;直…...

WebDAV之葫芦儿·派盘+网盘精灵

网盘精灵 支持WebDAV方式连接葫芦儿派盘。 推荐一款让您的iPhone、iPod、iPad 变成WebDav客户端的软件,支持从WebDav服务器连接葫芦儿派盘服务进行上传和下载件。 网盘精灵让您的iPhone、iPod、iPad 变成WebDav客户端。功能:WebDav操作、文件共享、本地文件管理...

计算机网络期末知识点总结

计算机网络期末知识点总结第四章—网络层&#xff1a;数据面4.1概述4.2虚电路和数据报网络4.3路由器工作原理4.4网际协议&#xff1a;因特网中的转发和编址第五章 网络层&#xff1a;控制面5.1路由选择算法5.2路由器中的路由选择5.3广播和多播路由选择第六章 链路层&#xff08…...

【Vue3 组件封装】vue3 轮播图组件封装

文章目录轮播图功能-获取数据轮播图-通用轮播图组件轮播图-数据渲染轮播图-逻辑封装轮播图功能-获取数据 目标: 基于pinia获取轮播图数据 核心代码&#xff1a; &#xff08;1&#xff09;在types/data.d.ts文件中定义轮播图数据的类型声明 // 所有接口的通用类型 export typ…...

电力国家(行业)标准目录

1、3&#xff5e;63kV交流高压负荷开关 GB 3804-90 代替 GB 3804-882、电气装置安装工程35kV及以下架空电力线路施工及验收规范Code for construction and acceptance of 35kVand umder over head power levels electricequipment installation engineeringGB50173—923、带电作…...

如何实现倒序输出

问题 如何实现字符串的大小写转换并倒序输出。 方法 采用Java自带的类方法进行倒序。 package homework4; public class Blog09 { public static void main(String[] args) { String a "HelloWord"; String a2 a.toUpperCase(); String a3 …...

wordpress模板开发/关键词优化设计

在ipad、iphone网页开发中&#xff0c;我们很可能需要判断是横屏或者竖屏。下面就来介绍如何用 jQuery 判断iPad、iPhone、Android是横屏还是竖屏的方法 其实主要是通过window.orientation实现&#xff0c;下面看下代码吧 function orient() { if (window.orientation 90 || w…...

工业设计相关网站/搜狗网站提交入口

此款32位MCU产品采用高性能32位ARM Cortex™-M4F内核&#xff0c;集成浮点运算单元&#xff08;FPU&#xff09;和数字信号处理&#xff08;DSP&#xff09;&#xff0c;支持并行计算指令。工作主频最高可达108MHz&#xff0c;集成高达128KB片内加密存储Flash&#xff0c;并支持…...

响应式网站缺点/电商平台的推广及运营思路

2019独角兽企业重金招聘Python工程师标准>>> 第1部分&#xff1a;说明 最近在做一个类似微信语音聊天的功能&#xff0c;在屏幕的底部放一个Button&#xff0c;按下时可以语音说话&#xff0c;松开时将语音发出去。但是做的过程中遇到一个坑&#xff1a;按钮放到页面…...

怎样做网站公司/2024很有可能再次封城吗

编写任何javascript程序我们要首先获得对象, jQuery选择器能彻底改变我们平时获取对象的方式, 可以获取几乎任何语意的对象, 比如"拥有title属性并且值中包含test的<a>元素", 完成这些工作只需要编写一个jQuery选择器字符串. 学习jQuery选择器是学习jQuery最重…...

wordpress 重定向循环/网络广告推广公司

背景 本文介绍ICML2021 I-BERT: Integer-only BERT Quantization 文章目的是对BERT进行更彻底的量化和整型计算&#xff1b; 作者认为之前的量化方案没有对gelu、softmax这些非线性操作进行量化计算&#xff08;如下图1&#xff09;&#xff0c;即保持了float类型的计算&…...

网罗天下做网站靠谱吗/seo交流qq群

控制语句 分支分流 循环语句判断语句 if...else...ifif 条件语句(比较 逻辑 成员运算符in)用法1:if 条件语句:子语句age 20if age > 18:#当条件是Ture时执行子语句print("恭喜你,你成年了")特殊:sif s:print("子语句执行了")这种情况等于判空操作,是空…...