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

期末算法分析程序填空题

目录

5-1 最小生成树(普里姆算法)

5-2 快速排序(分治法)

输入样例:

输出样例:

5-3 归并排序(递归法)

输入样例:

输出样例:

5-4 求解编辑距离问题(动态规划法)

输入格式:

输出格式:

输入样例1:

输出样例1:

5-5 求解会议安排问题(动态规划)

输入格式:

输出格式:

输入样例1:

输出样例1:

5-6 求解n皇后问题(递归回溯法)

输入格式:

输出格式:

输入样例1:

输出样例1:

5-7 0/1背包问题(回溯法)

输入格式:

输出格式:

输入样例1:

输出样例1:

5-8 0/1背包问题(分支限界法)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

5-9 部分背包问题(贪心法)

输入格式:

输出格式:

输入样例1:

输出样例1:

5-10 两个字符串的最长公共子序列长度


5-1 最小生成树(普里姆算法)

最小生成树(普里姆算法)。

#include <iostream>
#define MVNum 100
#define MaxInt 32767 
using namespace std;struct edge{char adjvex;int lowcost;
}closedge[MVNum];typedef struct{ char vexs[MVNum];   int arcs[MVNum][MVNum]; int vexnum,arcnum;
}AMGraph;int LocateVex(AMGraph G , char v);//实现细节隐藏
int CreateUDN(AMGraph &G);//实现细节隐藏int Min(AMGraph G){int i;int index = -1;int min = MaxInt;for(i = 0 ; i < G.vexnum ; ++i){if(){min = closedge[i].lowcost;index = i;}}return index;
}void MiniSpanTree_Prim(AMGraph G, char u){ int k , j , i;char u0 , v0;k =LocateVex(G, u);for(j = 0; j < G.vexnum; ++j){ if(j != k){  closedge[j].adjvex = ;closedge[j].lowcost = ;}}closedge[k].lowcost = ;for(i = 1; i < G.vexnum; ++i){k = ;  u0 = closedge[k].adjvex;v0 = G.vexs[k]; cout << u0 << "->" << v0 << endl;closedge[k].lowcost = ; for(j = 0; j < G.vexnum; ++j) if(G.arcs[k][j] < closedge[j].lowcost){closedge[j].adjvex = ;closedge[j].lowcost = ;}}
}int main(){AMGraph G;CreateUDN(G);char u;cin >> u;MiniSpanTree_Prim(G , u);return 0;
}

第一空:min > closedge[i].lowcost && closedge[i].lowcost != 0

第二空:u

第三空:G.arcs[k][j]

第四空:0

第五空:Min(G)

第六空:0

第七空:G.vexs[k]

第八空:G.arcs[k][j]

5-2 快速排序(分治法)

快速排序。

#include <iostream>
#define MAXSIZE 1000
using namespace std;typedef struct
{int key;char *otherinfo;
}ElemType;typedef struct
{ElemType *r;int  length;
}SqList;int Partition(SqList &L,int low,int high)
{ int pivotkey;L.r[0]=L.r[low]; pivotkey=L.r[low].key;while(){while() --high;L.r[low]=L.r[high];    while() ++low;L.r[high]=L.r[low];}L.r[low]=L.r[0];return  low;
}void QSort(SqList &L,int low,int high)
{int pivotloc;if(low<high){                                        pivotloc=;;;}
}void QuickSort(SqList &L)
{QSort(L,1,L.length);
}void Create_Sq(SqList &L)
{int i,n;cin>>n;    //输入的值不大于 MAXSIZEfor(i=1;i<=n;i++){cin>>L.r[i].key;L.length++;}
}
void show(SqList L)
{int i;for(i=1;i<=L.length;i++)if(i==1) cout<<L.r[i].key;elsecout<<" "<<L.r[i].key;
}int main()
{SqList L;L.r=new ElemType[MAXSIZE+1];L.length=0;Create_Sq(L);QuickSort(L);show(L);return 0;
}
输入样例:

第一行输入一个数n(输入的值不大于 MAXSIZE),接下来输入n个数。

7
24 53 45 45 12 24 90
输出样例:

输出按升序排序的结果。

12 24 24 45 45 53 90

第一空:low < high

第二空:low < high && L.r[high].key >= pivotkey

第三空:low < high && L.r[low].key <= pivotkey

第四空:Partition(L,low,high)

第五空:QSort(L,low,pivotloc-1)

第六空:QSort(L,pivotloc+1,high)

5-3 归并排序(递归法)

归并排序(递归法)。

#include <iostream>
#define MAXSIZE 1000
using namespace std;typedef struct
{int key;char *otherinfo;
}ElemType;typedef struct
{ElemType *r;int  length;
}SqList;void Create_Sq(SqList &L)
{int i,n;cin>>n;    //输入的值不大于 MAXSIZEfor(i=1;i<=n;i++){cin>>L.r[i].key;L.length++;}
}
void show(SqList L)
{int i;for(i=1;i<=L.length;i++)if(i==1) cout<<L.r[i].key;elsecout<<" "<<L.r[i].key;
}void Merge(ElemType R[],ElemType T[],int low,int mid,int high)
{ int i,j,k;i=low; j=mid+1;k=low; while(i<=mid&&j<=high){                     if(R[i].key<=R[j].key) T[k++]=R[i++]; else T[k++]=R[j++]; } while(i<=mid)T[k++]=R[i++];                 while(j<=high)T[k++]=R[j++];                       
} void MSort(ElemType R[],ElemType T[],int low,int high)
{ int mid;ElemType *S=new ElemType[MAXSIZE];if(low==high) ; else{ mid=(low+high)/2;;; ;} 
} void MergeSort(SqList &L)
{ MSort(L.r,L.r,1,L.length); 
} int main()
{SqList R;R.r=new ElemType[MAXSIZE+1];R.length=0;Create_Sq(R);MergeSort(R);show(R);return 0;
}
输入样例:

第一行输入一个数n,接下来输入n个数。

7
24 53 45 45 12 24 90
输出样例:

输出排序结果。

12 24 24 45 45 53 90

第一空:T[low]=R[low]

第二空:MSort(R,S,low,mid)

第三空:MSort(R,S,mid+1,high)

第四空:Merge(S,T,low,mid,high)

5-4 求解编辑距离问题(动态规划法)

设A和B是两个字符串。现在要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有3种:
(1)删除一个字符。
(2)插入一个字符。
(3)将一个字符替换另一个字符。

#include<stdio.h>
#include<string>
#include<iostream>
#include<algorithm> 
using namespace std;
#define MAX 201
//问题表示
string a;
string b;
//求解结果表示
int dp[MAX][MAX];
void solve()                    //求dp
{int i,j;for (i=1;i<=a.length();i++) dp[i][0]=i;            //把a的i个字符全部删除转换为bfor (j=1; j<=b.length(); j++)dp[0][j]=j;            //在a中插入b的全部字符转换为bfor (i=1; i<=a.length(); i++)for (j=1; j<=b.length(); j++){if (a[i-1]==b[j-1]);elsedp[i][j]=;}
}
int main()
{    cin>>a>>b;solve();printf("%d",dp[a.length()][b.length()]);return 0;
}
输入格式:

第一行输入A字符串,第二行输入B字符串。

输出格式:

输出最少的字符操作次数。

输入样例1:
sfdqxbw
gfdgw
输出样例1:
4 

第一空:dp[i][j]=dp[i-1][j-1]

第二空: min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + 1

5-5 求解会议安排问题(动态规划)

陈老师是一个比赛队的主教练。有一天,他想与团队成员开会,应该为这次会议安排教室。教室非常缺乏,所以教室管理员必须接受订单和拒绝订单以优化教室的利用率。如果接受一个订单,该订单的开始时间和结束时间成为一个活动。每个时间段只能安排一个订单(即假设只有一个教室)。请你找出一个最大化的总活动时间的方法。你的任务是这样的:读入订单,计算所有活动(接受的订单)占用时间的最大值。

#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
#define MAX 101
//问题表示
struct NodeType
{int b;                            //开始时间int e;                            //结束时间int length;                        //订单的执行时间
};bool cmp(const NodeType &a,const NodeType &b)
{    //用于排序的运算符重载函数return a.e<b.e;                //按结束时间递增排序
}int n;                            //订单个数
NodeType A[MAX];    //存放订单
//求解结果表示
int dp[MAX];                    //动态规划数组
int pre[MAX];                    //pre[i]存放前驱订单编号
void solve();int main()
{cin>>n;for(int i=0;i<n;i++)cin>>A[i].b>>A[i].e;for (int i=0; i<n; i++)A[i].length=A[i].e-A[i].b;solve();cout<<dp[n-1]; return 0;
}void solve()                    //求dp和pre
{memset(dp,0,sizeof(dp));    //dp数组初始化stable_sort(A,A+n,cmp);        //采用稳定的排序算法dp[0]=A[0].length;pre[0]=-1;for (int i=1;i<n;i++){int low=0, high=i-1;while(low<=high)        //在A[0..i-1]中查找结束时间早于A[i]开始时间的最晚订单A[low-1]{int mid=(low+high)/2;if(A[mid].e<=A[i].b)low=mid+1;elsehigh=mid-1;}if (low==0)                //特殊情况{if(dp[i-1]>=A[i].length){dp[i]=;pre[i]=-2;        //不选中订单i}else{dp[i]=;pre[i]=-1;        //没有前驱订单}}else                    //A[i]前面最晚有兼容订单A[low-1]{if (dp[i-1]>=dp[low-1]+A[i].length){dp[i]=;pre[i]=-2;        //不选中订单i}else{dp[i]=;pre[i]=low-1;    //选中订单i}}}
}
输入格式:

第一行是一个整数n,接着的n行中每一行包括两个整数b和e,其中b是一个订单开始时间,e是的结束时间。。

输出格式:

输出一行包括所有活动占用时间的最大值。

输入样例1:
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 15
输出样例1:
13

第一空:dp[i-1]

第二空:A[i].length

第三空:dp[i-1]

第四空:dp[low-1]+A[i].length

5-6 求解n皇后问题(递归回溯法)

在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。如下图所示是6皇后问题的一个解。

#include <stdio.h>
#include <stdlib.h>
#define N 20                    //最多皇后个数
int q[N];                        //存放各皇后所在的列号,即(i,q[i])为一个皇后位置void dispasolution(int n)        //输出n皇后问题的一个解
{for (int i=1;i<=n;i++)printf("(%d,%d)",i,q[i]);printf("\n");
}bool place(int i,int j)            //测试(i,j)位置能否摆放皇后
{if (i==1) return true;        //第一个皇后总是可以放置int k=1;while (k<i)            //k=1~i-1是已放置了皇后的行{    if ((q[k]==j) || (abs(q[k]-j)==abs(i-k)));k++;};
}void queen(int i,int n)            //放置1~i的皇后
{    if (i>n) dispasolution(n);        //所有皇后放置结束else{for (int j=1;j<=n;j++)        //在第i行上试探每一个列jif ()            //在第i行上找到一个合适位置(i,j){    q[i]=j;;}}
}int main()
{    int n;                    //n为存放实际皇后个数scanf("%d",&n);if (n<=20)queen(1,n);                //放置1~i的皇后return 0;
}
输入格式:

输入n。

输出格式:

按行输出每组解。

输入样例1:
6
输出样例1:
(1,2)(2,4)(3,6)(4,1)(5,3)(6,5)
(1,3)(2,6)(3,2)(4,5)(5,1)(6,4)
(1,4)(2,1)(3,5)(4,2)(5,6)(6,3)
(1,5)(2,3)(3,1)(4,6)(5,4)(6,2)

第一空:return false

第二空:return true

第三空:place(i,j)

第四空:queen(i+1,n)

5-7 0/1背包问题(回溯法)

0/1背包问题。给定一载重量为W的背包及n个重量为wi、价值为vi的物体,1≤i≤n,要求而且重量和恰好为W具有最大的价值。

#include <stdio.h>
#include <string.h>
#include <iostream>
#define MAXN 20                //最多物品数
using namespace std;
int n;                        //物品数
int W;                        //限制重量
int w[MAXN]={0};            //存放物品重量,不用下标0元素
int v[MAXN]={0};            //存放物品价值,不用下标0元素
int x[MAXN];                    //存放最终解
int maxv;                         //存放最优解的总价值
void dfs(int i,int tw,int tv,int rw,int op[]) //求解0/1背包问题
{int j;if (i>n)                    //找到一个叶子结点{    if ()     //找到一个满足条件的更优解,保存它{    maxv=tv;for ()    //复制最优解x[j]=op[j];}}else                        //尚未找完所有物品{    if ()          //左孩子结点剪枝:满足条件时才放入第i个物品{op[i]=1;            //选取第i个物品dfs();}op[i]=0;                //不选取第i个物品,回溯if ()            //右孩子结点剪枝dfs();}
}
void dispasolution()            //输出最优解
{    int i;for (i=1;i<=n;i++)if (x[i]==1)printf("%d ",i);printf("\n%d %d",W,maxv);
}
int main()
{int i;cin>>n>>W; //输入物体个数及背包载重量 for(int i=1;i<=n;i++)//输入各物体重量及价值 cin>>w[i]>>v[i];int op[MAXN];                //存放临时解memset(op,0,sizeof(op));int rw=0;for (int i=1;i<=n;i++)rw+=w[i];dfs(1,0,0,rw,op);dispasolution();return 0;
}
输入格式:

第一行输入背包载重量W及背包个数n,再依次输入n行,每行为背包重量wi和价值vi。

输出格式:

第一行输出输出装入背包内的物体编号(末尾有空格),第二行输出背包内的物体总重量和总价值。

输入样例1:
5 10
2 6
2 3
6 5
5 4
4 6
输出样例1:
1 2 3 
10 14 

第一空:tw==W && tv>maxv

第二空:j=1;j<=n;j++

第三空:tw+w[i]<=W

第四空:i+1,tw+w[i],tv+v[i],rw-w[i],op

第五空:tw+rw>W

第六空:i+1,tw,tv,rw-w[i],op

5-8 0/1背包问题(分支限界法)

0/1背包问题。给定一载重量为m的背包及n个重量为wi、价值为vi的物体,1≤i≤n,要求把物体装入背包,使背包的物体价值最大。

输入格式:

第一行输入背包载重量m及背包个数n,再依次输入n行,每行为背包重量wi和价值vi。

输出格式:

第一行输出输出所求X[n]数组,第二行输出装入背包内的物体的最大价值。

输入样例1:
5 10
2 6
2 3
6 5
5 4
4 6
输出样例1:
11001
15
输入样例2:
5 10
11 2
13 10
12 5
13 3
11 6
输出样例2:
00
0
#include <stdio.h>
#include <queue>
#include <iostream>
using namespace std;
#define MAXN 20                        //最多可能物品数
//问题表示
int n,W;
int w[MAXN+1];                //重量,下标0不用
int v[MAXN+1];                  //价值,下标0不用
//求解结果表示
int maxv=-9999;                        //存放最大价值,初始为最小值
int bestx[MAXN+1];                    //存放最优解,全局变量
int total=1;                        //解空间中结点数累计,全局变量
struct NodeType                        //队列中的结点类型
{    int no;                            //结点编号int i;                            //当前结点在搜索空间中的层次int w;                            //当前结点的总重量int v;                            //当前结点的总价值int x[MAXN+1];                    //当前结点包含的解向量double ub;                        //上界
};void bound(NodeType &e)            //计算分枝结点e的上界
{int i=e.i+1;int sumw=e.w;double sumv=e.v;while (){    sumw+=w[i];                //计算背包已装入载重sumv+=v[i];                //计算背包已装入价值i++;}if (i<=n)    e.ub=;elsee.ub=sumv;
}void EnQueue(NodeType e,queue<NodeType> &qu)    //结点e进队qu
{if (e.i==n)                    //到达叶子结点{if (e.v>maxv)            //找到更大价值的解{;for (int j=1;j<=n;j++);}}else qu.push(e);            //非叶子结点进队
}
void bfs()                            //求0/1背包的最优解
{int j;NodeType e,e1,e2;                //定义3个结点queue<NodeType> qu;                //定义一个队列e.i=0;                            //根结点置初值,其层次计为0e.w=0; e.v=0;e.no=total++; for (j=1;j<=n;j++)e.x[j]=0;bound(e);                        //求根结点的上界qu.push(e);                        //根结点进队while (!qu.empty())                //队不空循环{e=qu.front(); qu.pop();        //出队结点ee1.no=total++; e1.i=e.i+1;                //建立左孩子结点e1.w=e.w+w[e1.i];e1.v=e.v+v[e1.i];for (j=1;j<=n;j++)        //复制解向量e1.x[j]=e.x[j];e1.x[e1.i]=1;bound(e1);                //求左孩子结点的上界        if  ()        //剪枝:检查左孩子结点{EnQueue(e1,qu);            //左孩子结点进队操作}e2.no=total++;                //建立右孩子结点e2.i=e.i+1;e2.w=; e2.v=;for (j=1;j<=n;j++)            //复制解向量e2.x[j]=e.x[j];e2.x[e2.i]=;bound(e2);                    //求右孩子结点的上界if ()                //若右孩子结点可行,则进队,否则被剪枝EnQueue(e2,qu);}
}
int main()
{cin>>n>>W; //输入物体个数及背包载重量 for(int i=1;i<=n;i++)//输入各物体重量及价值 cin>>w[i]>>v[i];    bfs();                    //调用队列式分枝限界法求0/1背包问题for(int i=1;i<=n;i++)printf("%d",bestx[i]);printf("\n%d",maxv);return 0;
}

第一空:(sumw+w[i]<=W) && i<=n

第二空:sumv+(W-sumw)*v[i]/w[i]

第三空:maxv=e.v

第四空:bestx[j]=e.x[j]

第五空:e.w+w[e.i+1]<=W&&e1.ub>maxv

第六空:e.w

第七空:e.v

第八空:0

第九空:e2.ub>maxv

5-9 部分背包问题(贪心法)

设有编号为1、2、…、n的n个物品,它们的重量分别为w1、w2、…、wn,价值分别为v1、v2、…、vn,其中wi、vi(1≤i≤n)均为正数。
 有一个背包可以携带的最大重量不超过W。求解目标:在不超过背包负重的前提下,使背包装入的总价值最大。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 51
//问题表示
int n;
double W;                    //限重
struct NodeType
{   int no;double w;double v;double p;                    //p=v/wfloat x;bool operator<(const NodeType &s) const{return p>s.p;            //按p递减排序}
};
NodeType A[MAXN]={{0}};    //下标0不用
//求解结果表示
double V;                        //最大价值
bool cmp(const NodeType &a,const NodeType &b)
{return a.no<b.no;
}void Knap()                        //求解背包问题并返回总价值
{V=0;                        //V初始化为0double weight=W;            //背包中能装入的余下重量int i=1;while ()    {    A[i].x=1;                    //装入物品i;            V+=A[i].v;                //累计总价值;    }if (weight>0)                //当余下重量大于0{    A[i].x=;V+=A[i].x*A[i].v;            //累计总价值}
}int main()
{   cin>>n>>W;for(int i=1;i<=n;i++){cin>>A[i].no>>A[i].w>>A[i].v;A[i].x=0;}for (int i=1;i<=n;i++)            //求v/wA[i].p=A[i].v/A[i].w;sort(A+1,A+n+1);                //排序Knap();sort(A+1,A+n+1,cmp);for(int j=1;j<=n;j++)cout<<A[j].no<<" "<<A[j].x*A[j].v<<endl;cout<<V;return 0;
}
输入格式:

第一行物品数n和背包容量W,接着的n行中输入每个物品的编号,重量和价值。

输出格式:

输出装入背包的物品信息,共n行,按物品编号递增排序的物品编号及重量(物品编号从1开始)。最后一行输出总价值。

输入样例1:
5 100
1 10 20
2 20 30
3 30 66
4 40 40
5 50 60
输出样例1:
1 20
2 30
3 66
4 0
5 48
164

第一空:A[i].w<=weight

第二空:weight-=A[i].w

第三空:i++

第四空:weight/A[i].w

5-10 两个字符串的最长公共子序列长度

下面程序完成最长公共子序列的长度计算。

#include<stdio.h>
#include<string.h>
#define N 80
int C[N][N];   // 记录最长公共子序列 
int rec[N][N]; // 记录轨迹 int LCSLength(char *X, char *Y) 
{   int i,j,m=strlen(X),n=strlen(Y);for(i = 1; i <=m ; i++) {for(j = 1; j <= n; j++) {if() {C[i][j] = C[i-1][j-1] + 1;rec[i][j] = 1; //LU}else if() {C[i][j] = C[i-1][j]; rec[i][j] = 2; //U}else {C[i][j] = ;rec[i][j] = 3; //L}}}return C[m][n];
}

第一空:X[i]==Y[j]

第二空:C[i-1][j]>=C[i][j-1]

第三空:C[i][j-1]

相关文章:

期末算法分析程序填空题

目录 5-1 最小生成树&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 输入样例&#xff1a; 输出样例&#xff1a; 5-3 归并排序(递归法) 输入样例&#xff1a; 输出样例&#xff1a; 5-4 求解编辑距离问题&#xff08;动态规划法&#xff09;…...

搭建android开发环境 android studio

1、环境介绍 在进行安卓开发时&#xff0c;需要掌握java&#xff0c;需要安卓SDK&#xff0c;需要一款编辑器&#xff0c;还需要软件的测试环境&#xff08;真机或虚拟机&#xff09;。 早起开发安卓app&#xff0c;使用的是eclipse加安卓SDK&#xff0c;需要自行搭建。 目前开…...

R语言6种将字符转成数字的方法,写在新年来临之际

咱们临床研究中&#xff0c;拿到数据后首先要对数据进行清洗&#xff0c;把数据变成咱们想要的格式&#xff0c;才能进行下一步分析&#xff0c;其中数据中的字符转成数字是个重要的内容&#xff0c;因为字符中常含有特殊符号&#xff0c;不利于分析&#xff0c;转成数字后才能…...

RocketMQ学习笔记(持续更新中......)

目录 1. 单机搭建 2. 测试RocketMQ 3. 集群搭建 4. 集群启动 5. RocketMQ-DashBoard搭建 6. 不同类型消息发送 1.同步消息 2. 异步消息发送 3. 单向发送消息 7. 消费消息 1. 单机搭建 1. 先从rocketmq官网下载二进制包&#xff0c;ftp上传至linux服务器&#xff0c…...

强化学习的基础概念

这节课会介绍一些基本的概念&#xff0c;并结合例子讲解。 在马尔科夫决策框架下介绍这些概念 本博客是基于西湖大学强化学习课程的视屏进行笔记的&#xff0c;这是链接&#xff1a; 课程链接 目录 强化学习的基本概念 state和state space Action和Action Space State transiti…...

excel怎么删除右边无限列(亲测有效)

excel怎么删除右边无限列&#xff08;亲测有效&#xff09; 网上很多只用第1步的&#xff0c;删除了根本没用&#xff0c;还是存在&#xff0c;但是隐藏后取消隐藏却是可以的。 找到右边要删除的列的第一个空白列&#xff0c;选中整个列按“ctrlshift>(向右的小箭头)”&am…...

STM32-笔记23-超声波传感器HC-SR04

一、简介 HC-SR04 工作参数&#xff1a; • 探测距离&#xff1a;2~600cm • 探测精度&#xff1a;0.1cm1% • 感应角度&#xff1a;<15 • 输出方式&#xff1a;GPIO • 工作电压&#xff1a;DC 3~5.5V • 工作电流&#xff1a;5.3mA • 工作温度&#xff1a;-40~85℃ 怎么…...

Linux | Ubuntu零基础安装学习cURL文件传输工具

目录 介绍 检查安装包 下载安装 手册 介绍 ‌cURL是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;首次发行于1997年‌‌12。cURL支持多种协议&#xff0c;包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…...

什么是 GPT?Transformer 工作原理的动画展示

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 目录 1 图解 “Generative Pre-trained Transformer”&#xff08;GPT&#xff09; 1.1 Generative&#xff1a;生成式 1.1.1 可视化 1.1.2 生成式 vs. 判别式&#xff08;译注&#xff09; 1.2 Pr…...

SpringCloudAlibaba实战入门之路由网关Gateway过滤器(十三)

承接上篇,我们知道除了断言,还有一个重要的功能是过滤器,本节课我们就讲一下常见的网关过滤器及其一般使用。 一、Filter介绍 类似SpringMVC里面的的拦截器Interceptor,Servlet的过滤器。“pre”和“post”分别会在请求被执行前调用和被执行后调用,用来修改请求和响应信…...

电路仿真软件PSIM简介

在从事开关电源相关产品开发的工程师或者正在学习开关电源的学习者&#xff0c;常常会用到各种仿真软件进行电路的仿真&#xff0c;不仅可以快速验证电路参数&#xff0c;还能清楚知道各器件的工作状态。 现在的电路仿真软件很多&#xff0c;例如matlab、Multisim、Simplis&…...

C语言:调试的概念和调试器的选择

所谓调试&#xff08;Dubug&#xff09;&#xff0c;就是跟踪程序的运行过程&#xff0c;从而发现程序的逻辑错误&#xff08;思路错误&#xff09;&#xff0c;或者隐藏的缺陷&#xff08;Bug&#xff09;。 在调试的过程中&#xff0c;我们可以监控程序的每一个细节&#xff…...

25. C++继承 1 (继承的概念与基础使用, 继承的复制兼容规则,继承的作用域)

⭐上篇模板文章&#xff1a;24. C模板 2 (非类型模板参数&#xff0c;模板的特化与模板的分离编译)-CSDN博客 ⭐本篇代码&#xff1a;c学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 目录 一. 继承的基础使用 1.1 继承的格式 1.2 …...

git 退出编辑模式

在使用 Git 时&#xff0c;有时需要进入编辑器来输入提交信息或进行其他编辑操作。不同的系统和配置可能会导致使用不同的编辑器。以下是几种常见 Git 编辑器的退出方法&#xff1a; ‌Vim 编辑器‌&#xff1a; ‌保存并退出‌&#xff1a; 按下 Esc 键退出编辑模式。输入 :w…...

内容营销与传统营销方式有哪些差别?

在互联网高度发达的当下&#xff0c;碎片化的信息接收方式&#xff0c;让用户对于营销信息拥有较高的敏感度。这一现状&#xff0c;也使得众多传统营销方式正在逐渐失效。想要稳定推广效率&#xff0c;内容营销是当下不少品牌的共同选择。接下来&#xff0c;就让我们来了解下内…...

EasyExcel(读取操作和填充操作)

文章目录 1.准备Read.xlsx&#xff08;具有两个sheet&#xff09;2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …...

【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】

【华为OD-E卷 - 机房布局 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小明正在规划一个大型数据中心机房&#xff0c;为了使得机柜上的机器都能正常满负荷工作&#xff0c;需要确保在每个机柜边上至少要有一个电箱。 为了简化题目&#xff0c;假设这个机房…...

【竞技宝】LOL:IG新赛季分组被质疑

北京时间2024年12月31日&#xff0c;今天已经2024年的最后一天&#xff0c;在进入一月之后&#xff0c;英雄联盟将迎来全新的2025赛季。而目前新赛季第一阶段的抽签结果已经全部出炉&#xff0c;其中人气最高的IG战队在本次抽签中抽到了“绝世好签”引来了网友们的质疑。 首先介…...

ChatBI来啦!NBAI 正式上线 NL2SQL 功能

NebulaAI 现已正式上线 NL2SQL 功能&#xff0c;免费开放使用&#xff01; 什么是 NL2SQL&#xff1f;NL2SQL 即通过自然语言交互&#xff0c;用户可以轻松查询、分析和管理数据库中的数据&#xff08;ChatBI&#xff09;&#xff0c;从此摆脱传统复杂的数据库操作。 欢迎免费…...

8. Web应用程序(Web)

8. Web应用程序&#xff08;Web&#xff09; Spring Boot 非常适用于Web应用程序开发。你可以使用嵌入式 Tomcat、Jetty、Undertow或Netty创建一个独立的HTTP服务器。大多是Web应用程序都会使用 spring-boot-starter-web 依赖模块来快速启动和运行项目。你也可以选择使用 spri…...

Linux内核修改内存分配策略

今天遇到了如下的内核报错 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f0e1e06c000, 65536, 1) failed; errorCannot allocate memory (errno12)这个报错是因为&#xff0c;linux会对大部分的内存资源申请都回复允许&#xff0c;以便于运行更…...

六大亮点解析:AI视频监控助力部队训练安全管理

一、用户痛点&#xff1a; 在部队的日常训练和任务执行中&#xff0c;官兵的安全始终是最为重要的保障。然而&#xff0c;传统的监控方式存在显著的局限性&#xff0c;尤其是在高强度、长时间的训练过程中&#xff0c;人工值守监控容易产生疲劳&#xff0c;误判的风险大&#…...

【从零开始入门unity游戏开发之——C#篇33】C#委托(`Delegate`)和事件(`event` )、事件与委托的区别、Invoke()的解释

文章目录 一、委托&#xff08;Delegate&#xff09;1、什么是委托&#xff1f;2、委托的基本语法3、定义自定义委托4、如何使用自定义委托5、多播委托6、C# 中的系统委托7、GetInvocationList 获取多个函数返回值8、总结 二、事件&#xff08;event &#xff09;1、事件是什么…...

大数据与机器学习(它们有何关系?)

想了解大数据和机器学习吗&#xff1f;我们将为你解释它们是什么、彼此之间有何关联&#xff0c;以及它们为何在数据密集型应用中如此重要。 大数据和机器学习是如何相互关联的&#xff1f; 大数据指的是传统存储方法无法处理的海量数据。机器学习则是计算机系统从观察结果和…...

深入浅出 Spring(一) | Spring简介、IOC理论推导、快速上手 Spring

1. spring 1.1 简介 Spring : 春天 —>给软件行业带来了春天 2002年&#xff0c;Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日&#xff0c;Spring框架以interface21框架为基础&#xff0c;经过重新设计&#xff0c;发布了1.0正式版。 很难想象…...

IDEA 社区版 SpringBoot不能启动

报错原因&#xff0c;Failed to load class [javax.servlet.Filter] <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope> </dependency>…...

职场常用Excel基础01-数据验证

大家好&#xff0c;excel在职场中使用非常频繁&#xff0c;今天和大家一起分享一下excel中数据验证相关的内容~ 在Excel中&#xff0c;数据验证&#xff08;Data Validation&#xff09;是一项非常有用的功能&#xff0c;它可以帮助用户限制输入到单元格中的数据类型和范围&am…...

活动预告 |【Part1】Microsoft Azure 在线技术公开课:数据基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;数据基础知识”活动&#xff0c;了解有关云环境和数据服务中核心数据库概念的基础知识。通过本次免费的介绍性活动&#xff0c;你将提升在关系数据、非关系数据、大数据和分析方面的技能。 活动时间&#xff1a;01 月 07 日…...

RabbitMQ - 1 ( 7000 字 RabbitMQ 入门级教程 )

一&#xff1a; 在互联网行业&#xff0c;许多公司喜欢用动物命名产品或作为公司的 Logo 和吉祥物&#xff0c;比如腾讯的企鹅、京东的狗、美团的袋鼠、携程的海豚&#xff0c;而阿里更是凭借蚂蚁、飞猪、天猫、菜鸟、闲鱼、盒马等&#xff0c;打造了一座“动物园”。Rabbit&a…...

Docker Compose 构建 EMQX 集群 实现mqqt 和websocket

EMQX 集群化管理mqqt真香 目录 #目录 /usr/emqx 容器构建 vim docker-compose.yml version: 3services:emqx1:image: emqx:5.8.3container_name: emqx1environment:- "EMQX_NODE_NAMEemqxnode1.emqx.io"- "EMQX_CLUSTER__DISCOVERY_STRATEGYstatic"- …...