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

蓝桥杯递推与递归法|斐波那契数列|数字三角形|42点问题|数的计算|数的划分(C++)

递归是用来做dfs,是搜索算法的基础
递推是用来做dp部分,及部分其他算法,复杂度较低,不会出现爆栈问题

递推法:

递推法是一种在数学和其他领域广泛应用的重要方法,它在计算机科学中被用作一种关键的数值求解算法。

递推算法的特点

递推法的核心在于找到递推关系式。这种方法可以将复杂的计算过程转化为简单的重复步骤,充分利用计算机在运行程序时的时间局部性和空间局部性。

递推算法的思想:
  1. 首先找到各个相邻数据项之间的递推关系;
  2. 递推关系避开了求通项公式的麻烦,尤其是对于那些难以或无法求解通项公式的题目;
  3. 将复杂问题分解为若干步骤的简单运算;
  4. 一般来说,递推算法可以视为一种特殊的迭代算法。
递推算法解题的基本思路:
  1. 将复杂计算转换为简单重复运算;
  2. 通过找到递推关系式进行简化运算;
  3. 利用计算机的特性,减少运行时间。
递推算法的一般步骤:
  1. 根据题目确定数据项,并找到符合要求的递推关系式;
  2. 根据递推关系式设计递推程序;
  3. 根据题目找到递推的终点;
  4. 单次查询可以不进行存储,多次查询都要进行存储;
  5. 按要求输出答案即可。

递归法

递归算法:

递归算法是一种自顶向下的算法,它通过不断地直接或间接调用自身的函数,通过每次改变变量完成多个过程的重复计算,直到到达边界之后,结束调用。
与递推法相似的是,递归与递推都是将一个复杂过程分解为几个简单重复步骤进行计算。
递归算法的实现的核心是分治策略,即分而治之,将复杂过程分解为规模较小的同类问题,通过解决若干个小问题,进而解决整个复杂问题。

递归算法的思想:
  1. 将复杂计算过程转换为简单重复子过程;
  2. 找到递归公式,即能够将大问题转化为小问题的公式;
  3. 自上而下计算,在返回完成递归过程。
递归算法设计的一般步骤:
  1. 根据题目设计递归函数中的运算部分;
  2. 根据题目找到递归公式,题目可能会隐含给出,也可能需要自己进行推导;
  3. 找到递归出口,即递归的终止条件。

递归法和递推法的思路已经给大家讲解得差不多了,接下来我们将结合真实的大赛题目进行讲解。这将有助于我们更好地理解和应用这两种方法。

1. 斐波纳契数列 fibonacci 问题

在一定情况下,同一个问题可以使用用递归也可以使用递推解答。一般一个问题的递推关系和递归关系都好求的话就都可以解题。
当然如果题目只有一个关系好求,那就最好采用关系好求的办法。
题目描述:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…

在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N^*)

请求出该数列中第n个数字(n从1开始计数)是多少。

样例:

输入样例
样例1输入
6
样例2输入
4
输出样例
样例1输出
8
样例2输出
3

对于上面的样例我们进行了如下计算;

[0]=0
[1]=1
[2]=0+1
[3]=1+1=2
[4]=1+2=3
[5]=2+3=5
[6]=5+3=8

运行限制:

1. 最大运行时间:1s
2. 最大运行内存:128M

题目解析:

  • 这个题给出递推式 F(n) = F(n-1) + F(n-2)
  • 转化为可用的递推关系,即F(n) + F(n+1) = F(n+2)
    这一通过从n=1开始循环即可完成递推,当然也可以使用递归法。

首先我们写找出递归式,F(n)= F(n-1) + F(n-2)

F(n)= F(n-1) + F(n-2)= F(n-2)+F(n-3)+F(n-3)+F(n-4)
//重复调用

这样我们找到了递归式,然后我们应该找到递归出口。
我们可以知道 F(n)=0 n=0 ,F(n)=1 n=1这就是递归出口,能让递归停止的条件。
递归算法的通用框架如下:

do(a,b,c...)
{//递归终止条件,即出口if(a==? ,b==? ,....) return//递归条件if(条件1)do(参数1)else(条件2)do(参数2)}如本题,各子式间存在计算关系,可以化为:do(a)
{if(a==0) return 0;if(a==1) return 1;return do(a-1)+do(a-2);
}

这道题不是多次询问问题,不需要存储直接计算的复杂度是最低的。

答案解析

C++ 代码:

  • 递推算法代码
#include <iostream>
using namespace std;int main()
{int n; //第几个数int x=0; //F(n)int y=1; //F(n+1)int ans; //F(n+2)cin>>n;if(n==0) ans=0;else if(n==1) ans=1;else {for(int i=2;i<=n;i++){ans=x+y;x=y;y=ans;}}cout<<ans<<endl;}
  • 递归算法代码

#include <iostream>
using namespace std;int fn(int n)
{//递归出口1if(n==0)return 0;//递归出口2else if(n==1 )return 1;elsereturn fn(n-1)+fn(n-2); //递归关系式
}int main()
{int n; //第几个数int ans;cin>>n;ans=fn(n);cout<<ans<<endl;}
改进:记忆化

递归过程中做了重复工作,例如fib(3)计算了两次,其实只算1次就够了
为避免递归时重复计算,可以在子问题得到解决时,就保存结果,再次需要这个结果时,直接返回保存的结果就行了,不继续递归下去
这种存储已经解决的子问题结果的技术称为记忆化
记忆化是递归的常用优化技术
动态规划也常常使用递归写代码,记忆化也是动态规划的关键技术

#include <bits/stdc++.h>
using namespace std;int cnt = 0;    //统计执行了多少次递归
int data[25];   //存储斐波那契数
int fib (int n)
{cnt++;if (data[n] != 0)   //记忆化搜索,已经算过,不用再算,直接返回结果return data[n];if (n == 1 || n == 2){data[n] = 1;return data[n];}data[n] = fib(n - 1) + fib(n - 2);   //继续递归return data[n];
}
int main()
{cout << fib(20);         //计算递20个斐波那契数cout << " cnt=" << cnt;  //递归了cnt = 37次
}
存储型的递推与递归

我们在开始就讲过题目十分存储和非存储的,上面那个题目就是此询问,如果改为多次询问我们该怎么办,我们会采用存储的方式,存储的方式适用于大部分的的多次查询问题。
我们看一下修改后的题目。

题目描述:

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
我们将进行M次查询,每次输入一个N,其中n小于30。
请求出该数列中第n个数字(n从1开始计数)是多少?

样例:
输入样例
样例1输入:64278810
样例2输入:81323141724161011
输出样例
样例1输出:3113212155
样例2输出:233286573771597463689875589

运行限制:

1. 最大运行时间:1s
2. 最大运行内存:128M
题目解析:

这道题跟上面一道题的算法原理相同,只是增加了多次查询的复杂度,所以仅需修改这一点即可。
再有的是有的同学担心自己的输入输出是在一个屏幕上的,评测的时候会不会出现问题。
类似这样的情况,这一点是不用担心的,只要不是交互题,评测机的输入与输出是分开的,只有你的输出会用来跟答案比较,所以我们只用关心我们的输出即可。
比如有一道题让你计算 x+y 的值,如果你知道每答案,就可以直接输出,都不用进行读入。

然后我们来看一下需要多次询问的题目该怎么解决。

答案解析
C++ 代码:
递推算法代码

#include <iostream>
using namespace std;
int F[35];void init()
{F[0]=0;F[1]=1;for(int i=2;i<=30;i++){F[i]=F[i-1]+F[i-2];}
}
int main()
{int m; //m次查询int n; //第几个数init();cin>>m;while(m>0){m-=1;cin>>n;cout<<F[n]<<endl;}
}

存储答案的递推法,才是最常使用的递推法。

递归算法代码

#include <iostream>
using namespace std;
int F[35];int fn(int n)
{//递归出口1if(n==0){F[0]=0;return 0;}//递归出口2else if(n==1 ){F[1]=1;return 1;}else{F[n]=fn(n-1)+fn(n-2);return F[n]; //递归关系式}
}int main()
{int m; //m次查询int n; //第几个数fn(30);cin>>m;while(m>0){m-=1;cin>>n;cout<<F[n]<<endl;}
}
数字三角形问题

题目描述:
图片描述
如图数字三角形。如下所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。

  1. 一步可沿左斜线向下或右斜线向下走;
  2. 三角形行数小于等于 100;
  3. 三角形中的数字为 0,1,…,99;
    测试数据通过键盘逐行输入。
    如上例数据应以样例所示格式输入:
    样例:
输入:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出:
30

运行限制:

1. 最大运行时间:1s
2. 最大运行内存:128M

题目分析:
N=100,
S= ( 1 + 100 ) ∗ 100 = 1 0 4 (1+100)*100=10^4 (1+100)100=104
量级是 1 0 4 10^4 104,每个数都是0-99
最后是 1 0 6 10^6 106,用暴力也能做出来

解决该题目的方式有很多,包括动态规划, 枚举都可以解决这个问题。

我们从递推的思想出发,假设我们从顶层沿着某条路径已经走到了第 i 层,正向着 i+1 层前进, 两条可行路径中我们肯定会选择最大的方向前进,
为此我们可以采用递推中的反向递推,即逆推的方式解决,设 a [ i ] [ j ] a[i][j] a[i][j]存放从 i , j i,j i,j 出发到达第 n n n 层的最大值。
我们可以写出递推式:

a[i][j] = max{a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]}

则 逆推到出发点 a [ 1 ] [ 1 ] a[1][1] a[1][1]为题目所求答案,即第一层到第 N N N层的最大值。
递推一层由

7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

逆推第一层

7
3 8
8 1 0
7 12 10 10

第二层

7
3 8
20 13 10

第三层

7
23 21

第四层

30

递推的每次计算是 O ( 1 ) O(1) O(1) i i i是层数, j j j i i i层的这几个

C++ 代码:
#include<iostream>
using namespace std;int main()
{int n; //n层int a[101][101]; //路径矩阵cin>>n;//输入数字三角形的值for (int i=1; i<=n; i++){for (int j=1; j<=i; j++){cin>>a[i][j]; //输入原始数据}}//递推开始for (int i=n-1; i>=1; i--)//从最后一层逆推{for (int j=1; j<=i; j++){if (a[i+1][j]>=a[i+1][j+1])a[i][j]+=a[i+1][j];     //路径选择elsea[i][j]+=a[i+1][j+1];}}cout<<a[1][1]<<endl;
}

递推法的推广

42点问题
题目描述

众所周知在扑克牌中,有一个老掉牙的游戏叫做 24 点:选取4 张牌进行加减乘除,看是否能得出 24 这个答案。
现在小蓝同学发明了一个新游戏,他从扑克牌中依次抽出6张牌(注意不是一次抽出),进行计算,看是否能够组成 42 点,满足输出 YES,反之输出 NO。
最先抽出来的牌作为第一个操作数,再抽出牌做第二个操作数,运算结果再当作第一个操作数,继续进行操作。除不尽的情况保留整数。
请你设计一个程序对该问题进行解答。

输入描述
输出仅一行包含 6 个字符。
保证字符∈3 4 5 6 7 8 9 10 J Q K A 2。

输出描述
若给出到字符能够组成 42 点,满足输出 YES,反之输出 NO。

题目解析

不是一次抽出,可以重复,有放回事件

数据输入

for (int i = 0; i < 6; i++)
{char c;cin >> c;if (c == 'A')a[i] = 1;else if (c == 'J')a[i] = 11;else if (c == 'Q')a[i] = 12;else if (c == 'K')a[i] = 13;elsea[i] = (c - '0');
}

怎么枚举5次运算
共计 4 ∗ 4 ∗ 4 ∗ 4 ∗ 4 = 1024 4*4*4*4*4=1024 44444=1024种情况
创建5个vector,分别用来存放1-5次的运算结果

vector <int> ans[10];
ans[0].push_back(a[0]);for (int i = 1; i <= 5; i++)
{for (int j = 0; j < ans[i-1].size(); j++){ans[i].push_back(ans[i-1][j]+a[i]);ans[i].push_back(ans[i-1][j]-a[i]);ans[i].push_back(ans[i-1][j]*a[i]);ans[i].push_back(ans[i-1][j]/a[i]);}}

判断

int flag = 0;for (int i = 0; i < ans[5].size(); i++)
{if (ans[5][i] == 42){flag = 1;break;}
}
if (flag == 1)cout << "YES" << endl;
elsecout << "NO" << endl;
数的计算
题目描述

我们要求找出具有下列性质数的个数(包含输入的自然数 n):
先输入一个自然数 n ( n ≤ 1000 ) n(n \le 1000) n(n1000),然后对此自然数按照如下方法进行处理:

  1. 不作任何处理:
  2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半:
  3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止。
    例:n=6,合法的数字有:6(不做任何处理)、16、26、36、126、136
题目解析

第一层递归,枚举 a = 1 , 2 , … , n 2 a=1,2,\dots,{\frac{n}{2}} a=1,2,,2n
第二层递归,枚举 b = 1 , 2 , … , a 2 b=1,2,\dots,{\frac{a}{2}} b=1,2,,2a
第三层递归,枚举 c = 1 , 2 , … , b 2 c=1,2,\dots,{\frac{b}{2}} c=1,2,,2b

最后一层,等于1,返回


6
6/2=3 构造出 16 26 36
再根据16,a=1 构造不出来了,1/2=0
再根据26,a=2 构造2/2=1,构造出126
再根据126,1/2=0,构造不出来了
再根据36,构造3/2=1,构造出136
136不能再产出新数字


void f (int n)
{if (n == 1)return;   //如果n = 1,满足条件的数的个数是1for (int i = 1; i <= n/2; i++)  //枚举左边加的数{res++;   //新得到一个数,满足条件的数的个数+1f(i);    //递归}
}

按照题目意思,我们可以直接枚举左边加的数。
定义递归函数 f(n)表示输入数为 n 时满足题目条件的数的个数。
我们可以从最简单的情况开始考虑。当n =1时,只有一个数,满足条件的数的个数是 1。
如果 n > 1,那么我们需要枚举左边加的数。因为最左边的数不能为 0,所以左边加上的数的取值范围是 [ 1 , n / 2 ] [1,{n/2}] [1,n/2]
对于每一个加数i,得到的新数是n+i,我们需要递归调用 f(n +i),计算得到新数下满足条件的数的个数。
在递归调用结束后,我们需要将所有加数得到的满足条件的数的个数相加,得到最终的结果。
最后,输出 f(n)即可。

N=1时,1/2=0,无法进行构造,就只有一个解
N=2时,2/2=1,恰好构造出了12和本身2
N=3时,3/2=1,恰好构造出了13和本身3
N=4时,4/2=2,能够构造出14 24 124 4
如果写成函数f(4) = f(4/2=2)+f(2/2=1)+1   //124 24 / 14 / 4
f(5) = f(5/2=2)+f(2/2=1)+1   //125 25 / 15 / 5
...
f(n) = f(n/2)+f(n/2/2)+...+f(1)+1

递归式:

F(n):用i=(1-n/2)构造;对于每个生成的新的i,再次调用f(i)每构造一次就+1
代码
#include <iostream>
using namespace std;int f[1000];
int main()
{int n;scanf("%d", n);for (int i = 1; i <= n; i++){for (int j = 1; j <= i/2; j++){f[i] = f[i] + f[j];}f[i] = f[i] + 1;}return 0;
}
数的划分
题目描述

将整数 n 分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5;
1,5,1;
5,1,1;
问有多少种不同的分法。
输入描述
输入一行,2 个整数 n,k (6 ≤n≤ 200,2 ≤k≤ 6)。
输出描述
输出一个整数,即不同的分法


题目解析

计数dp,分治思想
7
4,2,1
定义递归函数 f ( n , m ) f(n,m) f(n,m)为将整数 n 拆分成 m 个数字的方案数。
对于每个情况,我们可以将它分成两种情况,且这两种情况是不重不漏的。

  1. 不选1的情况
    如果不选择 1,我们将 n 拆分成 m 块,可以等价于将每一块都减去 1,然后再将剩下的数拆分成m块,即 f ( n − m , m ) f(n-m,m) f(nm,m)
  2. 选1的情况:
    这种情况下,其中一块肯定有一个 1,然后对几-1拆分成 m-1块,即 f ( n − 1 , m − 1 ) f(n-1,m-1) f(n1,m1)
    此时, f ( n , m ) f(n,m) f(n,m)的值就是这两种情况之和,即
    f ( n , m ) = f ( n − m , m ) + f ( n − 1 , m − 1 ) f(n,m)=f(n-m,m)+f(n-1,m-1) f(n,m)=f(nm,m)+f(n1,m1)

对于样例7分3份:

  1. 不选1,那就先每份给个1
    111剩下了4,由于不选1,所以每组还得再分至少一个,所以就变成 f ( n − m , m ) f(n-m,m) f(nmm),即 7 − 3 = 4 7-3=4 73=4分成3份 f ( 4 , 3 ) f(4,3) f(4,3)
    对于 f ( 4 , 3 ) f(4,3) f(4,3)在考虑递归过程,同样分两种情况
    1. f ( 4 , 3 ) = f ( 4 − 3 , 3 ) + f ( 4 − 1 , 3 − 1 ) f(4,3)=f(4-3,3)+f(4-1,3-1) f(4,3)=f(43,3)+f(41,31)
      1. f(1,3)不合理,所以没有这种可能返回0
      2. f ( 3 , 2 ) = f ( 3 − 2 , 2 ) + f ( 3 − 1 , 2 − 1 ) f(3,2)=f(3-2,2)+f(3-1,2-1) f(3,2)=f(32,2)+f(31,21)
        1. f ( 1 , 2 ) f(1,2) f(1,2)不合理返回0
        2. f ( 2 , 1 ) f(2,1) f(2,1)两个数分成1堆,只有一种办法返回1
  2. 选1的情况,有且只能有1个1,所以1那个位置就不再改变,我们就去考虑剩下的7-1个数,分成3-1份,那就变成了 f ( n − 1 , m − 1 ) f(n-1,m-1) f(n1,m1) f ( 6 , 2 ) f(6,2) f(6,2)
    对于 f ( 6 , 2 ) f(6,2) f(6,2)使用同样的递归过程继续执行
代码
#include <bits/stdc++.h>
using namespace std;int f(int n, int m)
{if (n == 0 || m == 0 || n < m){return 0;}if (m == 1 || n == m){return 1;}else{return f (n - m, m) + f(n - 1, m - 1);}
}int main()
{int n, k;cin >> n >> k;cout << f (n, k) << "\n";return 0;
}
过多分支的一种处理思路
题目描述

古代中国使用天干地支来记录当前的年份。
天千一共有十个,分别为:甲、乙、丙、丁、戊、己、庚、辛、王、癸 。地支一共有十二个,分别为:子、丑、寅、卯、辰、日、午、未、申、酉、戌、亥将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020 年是庚子年。
每过一年,天干和地支都会移动到下一个。例如2021年是辛丑年。
每过 60年,天千会循环6轮,地支会循环5轮,所以天干地支纪年每 60年轮回一次。例如 1900年,1960年,2020年都是庚子年给定一个公元纪年的年份,请输出这一年的天干地支年份。

输入描述

输入一行包含一个正整数,表示公元年份。
其中有 ,输入的公元年份为不超过9999的正整数。

输出描述

输入一行包含一个正整数,表示公元年份。


这个题目是模拟法中最讨厌也最常见的一种,可能还有比这更复杂的,但这道题,已经初具代表性
他的种类比较多,天干就有10种,地支有12种
现在我们知道了 2020年是庚子年,我们这里既可以是除留余数来判断N年是什么天干和什么地支,我们也可以直接暴力使用循环做,这样的话9999的复杂度也跑不了多久。
实现起来很简单,我们讲这个比较难的。
我们先判断0000年的天干和地支
根据题意8000年距2020年了2020年。
已知天干有10个,那么2020%10=0剩下的都是整个轮回,即到了0000年是庚X年,即天干是庚,
再按照这个方法算地支是2020%12=4及还要向前推四年地支为申。
即 0000 为申年,那么根据模拟法可知。

string tg(int n)
{n = n%10;if (n == 0)return "geng";
}
string dz(int n)
{...
}
string tg[10] = {"geng"."xin","ren","gui","jia","yi","bing","ding","wu","ji"};
string dz[12] = {"shen","you","xu","hai","zi","chou","yin","mou","chen","si","wu","wei"};int main()
{int year;cin >> year;cout << tg[year%10] << dz[year%12] << endl;
}

相关文章:

蓝桥杯递推与递归法|斐波那契数列|数字三角形|42点问题|数的计算|数的划分(C++)

递归是用来做dfs&#xff0c;是搜索算法的基础 递推是用来做dp部分&#xff0c;及部分其他算法&#xff0c;复杂度较低&#xff0c;不会出现爆栈问题递推法&#xff1a; 递推法是一种在数学和其他领域广泛应用的重要方法&#xff0c;它在计算机科学中被用作一种关键的数值求解…...

遗留系统现代化:理解、策略与案例

文章目录 一、什么是遗留系统二、遗留系统的特点三、改造遗留系统的方法四、案例4.1 重构4.2 替换4.3 封装4.4 服务化 五、总结 一、什么是遗留系统 遗留系统&#xff08;Legacy System&#xff09;是指在组织中已经存在一段时间&#xff0c;通常是几年或更长时间的信息系统。…...

2024.3.9 C++启航 梦开始的地方

一.基本格式: #include<iostream>using namespace std;int main() {return 0; } 二.注释 1.当行注释: 同C语言//描述信息 2.多行注释: /*描述信息*/ 三.输入输出 既可以使用scanf和printf 也可以使用标准输入流对象cin和标准输出流对象cout,且cin cout更安全和方…...

Ubuntu平铺左、右、上、下、1/2、1/4窗口(脚本)

前言 之前因为一直在用Ubuntu 18或者Ubuntu 20然后发现装了GNOME插件后&#xff0c;电脑在使用过程中&#xff0c;会时不时的卡死&#xff08;鼠标没问题&#xff0c;键盘输入会有10-20秒的延迟&#xff09;频率基本是一小时一次&#xff0c;因为这种卡顿会很容易打断思路&…...

深度学习+感知机

深度学习感知机 1感知机总结 2多层感知机1XOR2激活函数3多类分类总结 3代码实现 1感知机 是个很简单的模型,是个二分类的问题。 感知机&#xff08;perceptron&#xff09;是Frank Rosenblatt在1957年提出的一种人工神经网络&#xff0c;被视为一种最简单形式的前馈神经网络&…...

爬虫练习:获取某招聘网站Python岗位信息

一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(拉钩Python岗位数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [公司, 规模,岗位,地区,薪资,经验要求]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer…...

Java对接腾讯云直播示例

首先是官网的文档地址 云直播 新手指南 可以发现它这个主要是按流量和功能收费的 价格总览 流量这里还只收下行的费用&#xff0c;就是只收观看消耗的流量费 其它的收费就是一些增值业务费 &#xff08;包括直播转码、直播录制、直播截图、直播审核、智能鉴黄、实时监播、移动直…...

free pascal 调用 C#程序读 Freeplane.mm文件,生成测试用例.csv文件

C# 请参阅&#xff1a;C# 用 System.Xml 读 Freeplane.mm文件&#xff0c;生成测试用例.csv文件 Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#x…...

在Blender中清理由Instant-NGP等几何学习技术生成的网格

使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式&#xff08;按Tab键&#xff09;。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…...

【重要公告】BSV区块链上线TypeScript SDK,未来将支持更多开发语言

​​发表时间&#xff1a;2024年2月21日 BSV区块链协会宣布上线JavaScript和TypeScript SDK&#xff08;即“标准开发工具包”&#xff09;。TypeScript SDK旨在为开发者提供新版统一核心代码库&#xff0c;以便利开发者在BSV区块链上开发能够任意扩容的应用程序。新上线的SDK替…...

【工具使用-VScode】VScode如何设置空格和tab键显示

一&#xff0c;简介 在提交代码的时候&#xff0c;行末尾的tab和空格不符合规范&#xff0c;但是如果在vscode中不显示tab和空格的话&#xff0c;不能及时的查看到并改正&#xff0c;导致提交代码之后还需要再次进行修改&#xff0c;效率比较低。 代码编辑界面如图所示&#…...

【原理图PCB专题】Cadence 17.4版本原理图及PCB Mudule复用

在我们设计复杂板卡的时候,往往会遇到一部分电路被反复使用的情况。虽然使用复制黏贴我们很快的做出相同的设计,但由于不同工程师能力水平不同,有时可能存在部分电路被漏掉导致重大异常。尤其对于大规模复杂设计,如果设计者浪费时间制作相同模块上,这无疑是对于工程师精力…...

llama-index调用qwen大模型实现RAG

背景 llama-index在实现RAG方案的时候多是用的llama等英文大模型&#xff0c;对于国内的诸多模型案例较少&#xff0c;本次将使用qwen大模型实现llama-index的RAG方案。 环境配置 &#xff08;1&#xff09;pip包 llamaindex需要预装很多包&#xff0c;这里先把我成功的案例…...

基于springboot的医院信息管理系统(程序+代码+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

【环境配置】Linux MySQL8 忘记密码解决措施

本片博客介绍 Linux 操作系统 Ubuntu 下&#xff0c;MySQL8 忘记密码怎么重新设置&#xff0c;笔者亲测有效&#xff0c;分享给大家。 查看 MySQL 版本 $ mysql --version停止 MySQL 服务器&#xff0c;并查看状态是否变更为 Server shutdown complete # 等价命令sudo syste…...

MySQL-锁:共享锁(读)、排他锁(写)、表锁、行锁、意向锁、间隙锁,锁升级

MySQL-锁&#xff1a;共享锁&#xff08;读&#xff09;、排他锁&#xff08;写&#xff09;、表锁、行锁、意向锁、间隙锁 共享锁&#xff08;读锁&#xff09;、排他锁表锁行锁意向锁间隙锁锁升级 MySQL数据库中的锁是控制并发访问的重要机制&#xff0c;它们确保数据的一致性…...

docker 使用官方镜像搭建 PHP 环境

一、所需环境&#xff1a; 1、PHP&#xff1a;7.4.33-fpm 的版本 2、Nginx&#xff1a;1.25.1 的版本 3、MySQL&#xff1a; 5.7 的版本 4、Redis&#xff1a;7.0 的版本 1.1、拉取官方的镜像 docker pull php:7.4.33-fpm docker pull nginx:1.25.1 docker pull mysql:5.7 do…...

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置

STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件偏好设置前言第1章 设置字体颜色第2章 设置字体大小第3章 设置代码区背景颜色总结 前言 编程软件环境最好就设置一个自己喜欢的界面进行显示&#xff0c;这样看起来会比较舒服些…...

【《高性能 MySQL》笔记】性能优化

学习知识最快最好的方式就是问对问题。 本文将通过“问正确的问题”的方式循序渐进地深入总结性能优化相关知识。 性能优化基础 Q1:什么是“性能”? 即响应时间(RT,Response Time),完成某个任务所需要的时间度量。 Q2:什么是“性能优化”? 性能优化为在一定工作负…...

Spring AOP底层原理

目录 代理模式 静态代理 动态代理 1. JDK动态代理 创建⼀个代理对象并使用 2. CGLIB动态代理 SpringAOP底层原理面试 代理模式 Spring AOP是基于动态代理模式来实现的 代理模式&#xff1a;静态代理模式动态代理模式 代理模式, 也叫委托模式。 定义&#xff1a;为其…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...