南阳理工学院(期末)算法分析练习题

一、算法阅读分析题:

1.分析如下算法,回答问题(10分)。

  1. 该算法的作用是什么(2分)?
  2. 分析该算法的时间复杂度(5分)?
  3. 设计算法的一个输入,并给出对应的算法输出结果(3分)

(1)该算法的作用

这段代码实现了归并排序(Merge Sort)算法,用于对数组进行排序。归并排序是一种分治策略的排序方法,它将数组分成越来越小的部分排序,然后合并以产生最终的排序数组。

(2)分析该算法的时间复杂度

归并排序的时间复杂度为O(nlogn),其中 n 是数组中元素的数量。具体分析如下:

分解:每次递归调用将问题分成两半,总共需要分 logn 层,因为每次都是对半分。

合并操作:每层合并的时间复杂度为O(n),因为每个元素最多被复制和移动一次。

整体复杂度:由于有logn 层,每层都需要 O(n) 的时间,因此总的时间复杂度是 O(nlogn)。

(3)设计算法的一个输入,并给出对应的算法输出结果

假设我们有一个包含7个元素的数组,元素如下:5,2,9,1,5,6,7

输入流程:

用户输入元素的个数 n=7。

用户依次输入数组元素:5, 2, 9, 1, 5, 6, 7。

算法输出:

经过归并排序后,数组应该是排序好的状态。按照给定的输入,排序的结果如下:

1,2,5,5,6,7,9

合并排序结果:1 2 5 5 6 7 9

这个输出展示了经过归并排序处理的数组,从最小到最大顺序排列

2.分析n皇后问题的求解算法,回答如下问题(10分)

  1. 该算法是否随机算法,为什么(3分)?
  2. 如果是,属于哪一类随机算法,为什么(3分)?
  3. 变量num、count的作用是什么(2分)?
  4. 函数queen的作用是什么(2分)?

算法2

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 20

int q[N], num=0;

void dispasolution(int n)

{

printf("  第%d次运行找到一个解: ",num);

for (int i=1;i<=n;i++)

printf("(%d,%d) ",i,q[i]);

printf("\n"); 

}

int randa(int a,int b) //产生n个[a,b]的随机数

{

return rand()%(b-a+1)+a;

}

bool place(int i,int j)

{

if (i==1) return true;

int k=1;

while (k<i)

{ if ((q[k]==j) || (abs(q[k]-j)==abs(i-k)))

return false;

k++;

}

return true;

}

bool queen(int i,int n)

{ int count,j;

if (i>n)

{ dispasolution(n);

return true;

}

else

{ count=0;

while (count<=n)

{ j=randa(1,n);

count++;

if (place(i,j)) break;

}

if (count>n) return false;

q[i]=j;

queen(i+1,n);

}

}

void main()

{ int n=8;

printf("%d皇后问题求解如下:\n",n);

srand((unsigned)time(NULL));

while (num<20)

{ if (queen(1,n))

break;

num++;

printf("  第%d次运行没有找到解\n",num);

}

}

(1)该算法是否为随机算法,以及原因

是的,这是一个随机算法。因为算法中使用了随机数生成器来决定皇后的位置,即 j=randa(1,n); 表示在每次尝试放置皇后时,其列位置 j 是随机选择的。这意味着算法的行为和结果部分依赖于随机数生成,每次执行的流程可能不同。

(2)属于哪一类随机算法,以及原因

这个算法属于蒙特卡洛算法。蒙特卡洛算法通过随机抽样来解决问题,其特点是运行时间固定,但解的正确性具有概率性。在这里,通过随机选择皇后的列位置,尝试找到一个符合条件的解,如果达到一定的尝试次数(这里是 n 次)仍未找到有效的位置,则认为当前的递归分支失败。

(3)变量 num、count 的作用

num: 这个变量用来记录算法尝试找到解的次数。每次运行算法,num 递增,直到找到解或达到某个特定的运行次数限制。在这段代码中,num 也用来标记找到解的次数,输出是第几次找到了一个解。

count: 在 queen 函数中,count 用来记录在给定的行 i 上尝试放置皇后的次数。当 count 超过 n(棋盘的大小),如果还没有找到合适的位置,则当前的放置尝试失败。

(4)函数 queen 的作用

函数 queen 是解决 n 皇后问题的核心递归函数。它尝试在棋盘上的第 i 行放置一个皇后,并确保这个放置是安全的,即不会导致任何两个皇后互相攻击。如果在第 i 行成功放置了皇后,函数会递归调用自己,尝试在下一行放置另一个皇后。如果成功放置了所有皇后(达到棋盘的尽头),则通过调用 dispasolution 函数显示解决方案。如果在某一行无法成功放置皇后,函数返回 false,这通常会引发回溯到上一行,尝试不同的位置。

3.分析如下会议安排算法,回答问题(10分)

  1. 该算法的作用是什么(3分)?
  2. 该算法属于哪一类算法策略,求解策略具有什么特点(3分)?
  3. 语句if(meet[i].beg>=last)的作用是什么(2分)?
  4. 语句 last = meet[i].end的作用是什么(2分)?

#include <iostream>

#include <algorithm>

#include <cstring>

using namespace std;

struct Meet

{   int beg;   

    int end;  

    int num;   

}meet[1000];   

void init()

{   int s,e;

    cout <<"输入会议总数:"<<endl;

    cin >> n;

    int i;

    cout <<"输入开始时间和结束时间:"<<endl;

    for(i=0;i<n;++i)

    {

        cin>>s>>e;

        meet[i].beg=s;

        meet[i].end=e;

        meet[i].num=i+1;

    }

}

bool cmp(Meet x,Meet y)

{   if (x.end == y.end)

        return x.beg > y.beg;

    return x.end < y.end;

}

void solve()

{   sort(meet,meet+n,cmp);   

    cout <<"排完序的会议时间如下:"<<endl;

    int i;

    cout <<"会议编号:"<<"  开始时间 "<<" 结束时间"<<endl;

    ans=1;

    int last = meet[0].end;  

    for( i = 1;i < n;++i)

    {

        if(meet[i].beg>=last)

        {           

           ans++;

           last = meet[i].end;

           cout <<"选择第"<<meet[i].num<<"个会议"<<endl;

         }

    }

    cout <<"最多可以安排" <<ans << "个会议"<<endl;

}

int main()

{

  init();

  solve();

  return 0;

}

(1)算法的作用

该算法的主要作用是解决会议室安排问题,即在给定一系列会议的开始时间和结束时间的情况下,选择尽可能多的会议进行安排,使得这些会议之间不发生时间上的冲突。

(2)算法类别与求解策略特点

这个算法属于贪心算法策略。其特点在于每一步都做出当前看起来最优的选择(这里是选择最早结束的会议),希望这样的局部最优选择能导致全局最优解。在会议安排问题中,按会议的结束时间对会议进行排序,并贪心地选择每个会议是实现总体目标的有效策略。

(3)语句 if(meet[i].beg>=last) 的作用

这个语句用于检查当前考虑的会议 meet[i] 的开始时间是否不早于上一个被选中的会议的结束时间 last。如果 meet[i].beg 大于或等于 last,这意味着当前会议可以在不与已选会议冲突的情况下被安排。这是贪心选择的关键条件,确保会议之间没有时间重叠。

(4)语句 last = meet[i].end 的作用

该语句更新变量 last 的值为当前被选中会议的结束时间。这样做的目的是记录下一个会议必须开始的最早时间,即不能早于当前会议的结束时间。这是为了保证后续选择的会议不会与前面已经选择的会议重叠,从而最大化可以安排的会议数量

二、解答题:(共40 分)

评卷人

得分

4.假设用于通信的电文仅由8个字母{ a,b,c,d,e,f,g,h } 构成,它们在电文中出现的概率分别为{0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11},设计一种编码方案,能够以最快的速度进行传输(10分)

(1)描述所用的求解算法,该算法属于何种算法策略(6分)

(2)给出8个字母的编码(4分)

(1)求解算法描述及其策略

所用的求解算法为 哈夫曼编码(Huffman Coding),这是一种基于贪心策略的编码方法。哈夫曼编码通过构建一棵优化的二叉树来最小化编码长度,使得总体传输速度最快。

算法策略:贪心算法。哈夫曼编码过程中,总是选择频率最低的两个节点组合成新的节点,这种局部最优选择可以导致全局最优的编码长度。

哈夫曼编码的基本步骤:

初始化:为电文中的每个字符创建一个节点,并将其作为独立的树,每棵树的“权重”是该字符在电文中的概率。

构建优先队列:将所有节点放入一个优先队列(或最小堆),按照概率排序。

构建哈夫曼树:

从优先队列中取出两个概率最小的节点,合并为一个新的节点,其概率是两个子节点概率的和。

将新节点重新插入优先队列。

重复上述过程,直到优先队列中只剩一个节点,这就是哈夫曼树的根节点。

生成编码:从根节点开始,向下遍历到每个叶节点(字符),左分支代表0,右分支代表1,路径上的序列即为该字符的哈夫曼编码。

(2)编码示例

以给定的字符概率,构建哈夫曼树并为每个字符生成编码。这里先假设执行了哈夫曼编码的标准过程,下面是可能的编码结果:

a : 1101

b : 0

c : 1111

d : 1110

e : 10

f : 01

g : 1100

h : 101

5. 使用分治算法,对n个关键字进行排序(10分)。

(1)描述你所采用的分治算法及其计算步骤(5分);

(2)举例说明(n>6),各趟排序结束时,关键字序列的状态(5分)。

(1)分治算法描述及计算步骤

对于排序问题,使用 归并排序(Merge Sort)是一种经典的分治算法。归并排序将大问题分解成小问题,处理后再合并结果,以达到整体上的有序。

基本步骤:

分解:将当前序列分成两个子序列,每个子序列大约有一半的长度。

递归排序:递归地对两个子序列进行归并排序,直到子序列长度为1或0,这时子序列已经有序。

合并:将两个有序的子序列合并成一个有序序列。

(2)举例说明

假设有8个关键字,初始序列为:[8, 3, 9, 6, 2, 7, 5, 4]

排序过程示例:

初始序列:[8, 3, 9, 6, 2, 7, 5, 4]

第一趟排序:

分解为两个子序列:[8, 3, 9, 6] 和 [2, 7, 5, 4]

分别对这两个子序列排序。

第二趟排序:

对[8, 3, 9, 6]分解排序后:[3, 8] 和 [6, 9]

对[2, 7, 5, 4]分解排序后:[2, 7] 和 [4, 5]

第三趟排序:

合并[3, 8]和[6, 9]得到[3, 6, 8, 9]

合并[2, 7]和[4, 5]得到[2, 4, 5, 7]

最终合并:

合并[3, 6, 8, 9]和[2, 4, 5, 7]得到最终有序序列[2, 3, 4, 5, 6, 7, 8, 9]

每趟结束时关键字序列状态:

初始分解:[8, 3, 9, 6], [2, 7, 5, 4]

第二趟后:[3, 8, 6, 9], [2, 7, 4, 5]

第三趟后:[3, 6, 8, 9], [2, 4, 5, 7]

最终合并:[2, 3, 4, 5, 6, 7, 8, 9]

6.0-1背包问题:给定n个物品,1个背包,背包容量为C,n个物品的重量和价值分别为:(wi,vi)i=1,2,3,...,n。物品不能分割,求解在不超过背包容量的前提下,怎么装能够使得装入的物品总价值最大(10分)。

  1. 分析并说明问题的特征,并根据问题特征选择合适的算法策略(2分);
  2. 描述解决该问题的算法原理及求解思路(可使用使用文字或递推公式,5分);

(3)举例并求出问题的解(n>4)(3分)。

(1)问题特征与算法策略选择

问题特征:

0-1背包问题中,每个物品只能被选取一次,不能分割。

背包有固定的容量限制。

目标是最大化背包中物品的总价值。

算法策略:选择动态规划来解决这个问题,因为它适合处理基于限制条件的最优化问题,尤其适用于背包问题的离散选择和容量限制。

(2)算法原理及求解思路

动态规划解法的基本思想:

定义dp[i][j]为考虑前i个物品,当背包容量为j时能够装入的最大价值。

状态转移方程:

其中,w_i和v_i分别是第i个物品的重量和价值。

如果不选取第i个物品,则最大价值由前i-1个物品决定,即dp[i-1][j]。

如果选取第i个物品(前提是j >= w_i),则价值是该物品的价值加上剩余容量下前i-1个物品的最大价值,即dp[i-1][j-w_i] + v_i。

初始化:

dp[0][j] = 0 对于所有j,因为没有物品时最大价值为0。

dp[i][0] = 0 对于所有i,因为容量为0时不能装任何物品。

(3)举例求解

假设有5个物品,背包的容量为10,每个物品的重量和价值如下:

物品1: 重量2,价值6

物品2: 重量5,价值9

物品3: 重量4,价值5

物品4: 重量2,价值4

物品5: 重量3,价值7

初始化动态规划表格:创建一个二维数组 dp 来存储中间结果,其中 dp[i][j] 表示考虑前 i 个物品,背包容量为 j 时的最大价值。

填充表格:通过比较不包括当前物品与包括当前物品的情况(如果重量允许),更新表格以得到最大价值。

返回最终结果:表格的最后一个元素 dp[n][capacity] 包含了在给定背包容量和物品列表下的最大价值。

7. 假设需要从A地到B地运送运送物品,途中具有e条路段,中间具有n个站点,站点i和站点j之间的运输量不能超过Cij,如何安排运输方案才能达到最大运输量,问答下列问题(10分)

(1)描述解决该问题的算法运行原理及求解思路(可使用使用文字或公式,6分);

(2)搜索运输路径时,设计出两种不同的搜索方法,并将其描述出来(4分)。

(1)算法运行原理及求解思路

这个问题是典型的最大流问题,在图论中广泛研究。问题的核心是找到从源点(A地)到汇点(B地)的最大可能流量。解决这一问题的算法运行原理基于寻找增广路径(augmenting paths),即那些还有剩余容量可供流动的路径,并通过这些路径持续增加从源点到汇点的流量。

Ford-Fulkerson 方法是解决此类问题的一个常用策略。它使用以下步骤:

初始化流网络:每条边的初始流量设为0。

寻找增广路径:使用深度优先搜索(DFS)或广度优先搜索(BFS)找到从源点到汇点的一条路径,此路径上的每条边的剩余容量(原始容量减去已用流量)都大于0。

更新流量:对找到的增广路径上的每条边更新流量。增加的流量是该路径上可用的最小剩余容量。

重复过程:重复步骤2和3,直到无法找到新的增广路径为止。此时的流量即为最大流。

这种方法利用局部增广路径逐步推进,直到达到流网络的流量平衡。

(2)搜索运输路径的两种不同方法

方法一:广度优先搜索(BFS)- Edmonds-Karp 算法

原理:使用广度优先搜索来寻找增广路径,这种方法在每次迭代中都找到最短的增广路径,从而可以在多项式时间内解决最大流问题。

优点:防止了路径回环的问题,且在稠密图中表现良好。

方法二:深度优先搜索(DFS)- Ford-Fulkerson 方法

原理:使用深度优先搜索寻找增广路径。DFS更适合于发现任意可行的增广路径,尤其是在网络结构复杂或路径选择较多的情况下。

优点:实现简单,对于一些特定情况可能更快找到增广路径。

这两种方法各有优势,BFS的Edmonds-Karp算法保证了寻找最短的增广路径,通常效率更高、更稳定;而DFS的Ford-Fulkerson方法在实现上更灵活,对于小规模或结构特殊的图表现可能更优。选择哪种方法取决于具体问题的规模和图的特性。

三、算法设计题:(共 30 分)

评卷人

得分

8.假设有n个机器零件{P1,P2,…,Pn}需要加工,每个机器零件必须先由机器A加工,然后才能由机器B进行加工;零件Pi在机器A的加工时间为{t11,t12,…,t1n},零件Pi在机器B的加工时间为{t21,t22,…,t2n},请设计算法,求出一种总花费时间最短的零件加工顺序。(15分)

  1. 写出二种能够解决该问题的算法策略,分析、比较其优缺点(5分);
  2. 选择其中一种算法策略解决该问题,并描述所选算法策略的基本思想2);
  3. 用代码、自然语言、流程图等设计所选算法(5分);
  4. 分析所选算法的时间复杂度(3分)。

1. 解决算法策略及其分析比较

策略一:贪心算法(最短加工时间优先)

优点:实现简单,计算速度快。

缺点:可能不会得到全局最优解,只能保证局部最优。

策略二:Johnson算法(两机器流水作业调度)

优点:可以在特定条件下(两机器情况)提供最优解。

缺点:只适用于两个机器的情况,扩展性有限。

2. 选定算法策略:Johnson算法

Johnson算法适用于两机器的流水线作业调度,其目标是最小化总完成时间。其基本思想是根据特定的排序规则来安排作业,这一规则确保了在两机器流水作业情况下的最优解。

3. 算法描述(自然语言)

基本步骤:

创建列表:将所有零件按机器A和机器B的加工时间列出。

排序规则:如果零件在机器A的加工时间少于在机器B的时间,则按机器A的时间升序排序;否则,按机器B的时间降序排序。

调度:根据上述排序结果,依次安排零件的加工顺序。

执行:按照这个顺序,先在机器A上加工完成后,再在机器B上加工。

4. 时间复杂度分析

Johnson算法主要的时间消耗在排序步骤,使用常规排序算法(如归并排序或快速排序)的时间复杂度为 O(nlogn)。因此,整体算法的时间复杂度为O(nlogn)。

这种方法通过有效的排序规则确保了每个零件都以最优的顺序进入机器,从而实现了总加工时间的最小化。

9.设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括:删除一个字符;插入一个字符;将一个字符改为另一个字符(15分)。

  1. 给出求解问题的算法策略(2分);
  2. 写出该算法策略的基本思想(4分);
  3. 用代码、自然语言、流程图等描述出所设计的算法(9分)。

(1)算法策略

针对将字符串A转换为字符串B的最少字符操作问题,适用的算法策略是动态规划

(2)算法策略的基本思想

动态规划算法通过构建一个二维表格,其中的每个单元格 dp[i][j] 表示将字符串A的前i个字符转换为字符串B的前j个字符所需的最小操作数。通过递推的方式填充这个表格,可以计算出从A到B的最小编辑距离。三种基本操作是:删除一个字符、插入一个字符、替换一个字符,每种操作的代价均为1。

(3)算法描述

初始化表格:首先,创建一个大小为 (m+1) x (n+1) 的二维数组 dp,其中 m 和 n 分别是字符串 A 和 B 的长度。dp[i][j] 表示将 A 的前 i 个字符转换成 B 的前 j 个字符所需的最少操作次数。

设置基本条件:初始化表格的第一行和第一列。dp[i][0] 表示将 A 的前 i 个字符全部删除以匹配空字符串 B,因此 dp[i][0] = i。同理,dp[0][j] 表示将空字符串 A 通过插入操作变为 B 的前 j 个字符,所以 dp[0][j] = j。

填充表格:对于表格中的每一个元素 dp[i][j],计算将 A 的前 i 个字符转换为 B 的前 j 个字符的最小操作数。如果 A 的第 i 个字符与 B 的第 j 个字符相同(注意:由于索引从0开始,因此对应的字符是 A[i-1] 和 B[j-1]),则 dp[i][j] = dp[i-1][j-1],表示不需要额外操作。如果字符不同,我们有三种操作可以选择:

删除操作:dp[i-1][j] + 1,即删除 A 的第 i 个字符,然后将 A 的前 i-1 个字符转换为 B 的前 j 个字符。

插入操作:dp[i][j-1] + 1,即在 A 的 i 个字符后插入一个新字符(与 B 的第 j 个字符相同),然后将 A 的前 i 个字符转换为 B 的前 j-1 个字符。

替换操作:dp[i-1][j-1] + 1,即将 A 的第 i 个字符替换为 B 的第 j 个字符,然后将 A 的前 i-1 个字符转换为 B 的前 j-1 个字符。

得到结果:表格的右下角元素 dp[m][n] 包含了将整个字符串 A 转换为整个字符串 B 所需的最小操作数。

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

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

相关文章

WMS系统调拨盘点功能:优化仓储管理效率

一、调拨功能概述 WMS系统的调拨功能是指仓库内部或者不同仓库之间对商品进行转移的过程。调拨的目的在于平衡库存、优化存储空间和提高物流效率。调拨功能主要包括以下几个方面&#xff1a; 1. 调拨申请&#xff1a;根据业务需求&#xff0c;仓库管理员可以发起调拨申请&…

游泳耳机哪个牌子好性价比高?精选高性价比的四大游泳耳机!

在现代社会中&#xff0c;随着健身和水中运动的普及&#xff0c;游泳耳机作为一种关键的健身配件&#xff0c;正日益受到广泛关注和需求。无论是在游泳池畅游还是深潜海底&#xff0c;好的游泳耳机不仅能提供高品质的音乐享受&#xff0c;更能保护耳朵免受水压和湿润环境的侵害…

用VBA快速将Word文档表格转化为纯文本

一、原表格以及转移出来的文本 转为纯文本时&#xff0c;每一行内容保留表头&#xff0c;文本在表格下方 二、代码 Sub 表格转为纯文本()Dim t As Singlet TimerDim i As Integer, j As IntegerDim ta As TableDim arr() As StringSet ta ActiveDocument.Range.Tables(1)Re…

transdreamer 论文阅读笔记

这篇文章是对dreamer系列的改进&#xff0c;是一篇world model 的论文改进点在于&#xff0c;dreamer用的是循环神经网络&#xff0c;本文想把它改成transformer&#xff0c;并且希望能利用transformer实现并行训练。改成transformer的话有个地方要改掉&#xff0c;dreamer用ht…

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络&#xff08;谢希仁第六版&#xff09;课后习题与答案 物理层 博客只对老师给的重点进行整理&#xff0c;完整的课后习题答案见Gitee下载&#xff1a;《计算机网络教程&#xff08;第6版&#xff09;&#xff08;微课版&#xff09;》习题答案 2-5 请画出数据流1 0 1…

git\repo

常用git和repo命令_repo git-CSDN博客文章浏览阅读1.5w次&#xff0c;点赞9次&#xff0c;收藏112次。常用git和repo命令文章收集了最近使用的一些repo和git命令&#xff0c;下图是个人理解的git文件状态转换图。 相关概念 名称 意义 repo 谷歌用Python脚本写的调用git的一个脚…

【Linux】进程_5

文章目录 五、进程6. 进程的调度和转换7. 环境变量 未完待续 五、进程 6. 进程的调度和转换 进程在运行过程中&#xff0c;要产生大量的临时数据&#xff0c;存放在CPU的寄存器中&#xff0c;CPU内部的所有临时数据我们叫做进程的 硬件上下文。当进程的时间片到了时&#xff…

【Android面试八股文】谈一谈你对http和https的关系理解

文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…

【机器学习】对大规模的文本数据进行多标签的分类处理

1. 引言 1.1. NLP研究的背景 随着人工智能技术的飞速发展&#xff0c;智能助手、聊天机器人和虚拟客服的需求正呈现出爆炸性增长。这些技术不仅为人们提供了极大的生活便利&#xff0c;如日程管理、信息查询和情感陪伴&#xff0c;还在工作场景中显著提高了效率。聊天机器人凭…

【proteus仿真】基于51单片机的秒表设计

【proteus仿真】基于51单片机的秒表设计 资料获取在文章结尾处&#xff01; 更多资料获取链接&#xff1a; https://docs.qq.com/sheet/DTExIc2dPUUJ5enZZ?tabBB08J2 1.资料内容 源码proteus仿真图 演示视频&#xff1a; 【proteus仿真】基于51单片机的秒表设计_哔哩哔…

AI日报|英伟达Nemotron-4 340B模型助力各行业数据生成,扣子发起匿名AI模型擂台赛!

文章推荐 AI日报&#xff5c;跃问App上架加入AI助理竞争&#xff01;GPTZero获千万美元A轮融资&#xff0c;创始人不到30岁&#xff01; AI日报&#xff5c;Luma推出AI视频模型&#xff0c;又一Sora级选手登场&#xff1f;SD3 Medium发布&#xff0c;图中文效果改善明显 ⭐️…

Day41

Day41 文件的上传 浏览器底层是通过输入流读取文件&#xff0c;通过输出流传输到服务器&#xff0c;服务器通过输入流读取数据&#xff0c;通过输出流将文件保存在本地。注意&#xff1a;浏览器的表单不许用post请求&#xff0c;get请求会将数据显示在地址栏里。 上传头像 场景…

【数据结构与算法(C语言)】循环队列图解

目录 1. 前言1.1 普通循环队列假溢出1.1.1 初始化队列1.1.2 插满队列1.1.3 删除元素后&#xff0c;再插入元素 1.2 循环队列1.2.1 插入元素&#xff0c;队列已满1.2.2 将元素J1、J2出列&#xff0c;循环队列又空出两个空间1.2.3 元素J6可以继续入列 2. 存储结构和函数说明2.1 队…

vivado PIP or SITE_PIP、PKGPIN_BYTEGROUP

PIP是Xilinx部件上用于路由连接或网络的设备对象。PIP 称为ARC的连接多路复用器可以编程为将一根电线连接到 另一个&#xff0c;从而将节点连接在一起&#xff0c;以形成中特定NET所需的路由 设计。 SITE_PIP&#xff0c;也称为路由BEL&#xff0c;是SITE内部的连接多路复用器&…

android常用知识

透明activity样式&#xff1a; android:theme"android:style/Theme.Translucent.NoTitleBar.Fullscreen"这句代码&#xff0c;当你是建的empty activity project时&#xff0c;默认继承的是AppCompat这个类。所以在AndroidMifext.xml文件中用上述代码会导致程序错误&…

Qt | 简单的使用 QStyle 类(风格也称为样式)

01、前言 者在 pro 文件中已添加了正确的 QT+=widgets 语句 02、基础样式 1、QStyle 类继承自 QObject,该类是一个抽像类。 2、QStyle 类描述了 GUI 的界面外观,Qt 的内置部件使用该类执行几乎所有的绘制,以确保 使这些部件看起来与本地部件完全相同。 3、Qt 内置了一系…

制造业为什么需要ERP企业管理软件?

如今&#xff0c;传统的制造业管理方式逐渐变得力不从心~库存积压、生产效率低下、供应链混乱…想象一下&#xff0c;如果你的企业仍然依赖于手工记录订单、库存和财务数据&#xff0c;那么每当市场发生变动时&#xff0c;你就需要花费大量的时间和精力去重新调整生产计划、更新…

【深度学习驱动流体力学】VTK创建、处理和可视化流体数据

Visualization Toolkit&#xff08;VTK&#xff09;是一个强大的开源软件系统&#xff0c;用于处理和可视化三维数据。它提供了丰富的工具和算法&#xff0c;可以处理从简单的网格数据到复杂的流体动力学模拟数据等各种类型的数据。本文将完整介绍如何使用 VTK 创建、处理和可视…

Springboot + Mybatis 实现sql打印

参照这个视频&#xff1a;https://www.bilibili.com/video/BV1MS411N7mn/?vd_source90ebeef3261cec486646b6583e9f45f5 实现mybatis对外暴露的接口Interceptor 使用Intercepts接口,这里的写法参照mybatis-plus中的拦截器写法 Intercepts({Signature(type Executor.class, m…

BC153 [NOIP2010]数字统计

数字统计 一.题目描述二.输入描述&#xff1a;三.输出描述&#xff1a;四.数字范围五.题目思路六.代码实现 一.题目描述 请统计某个给定范围[L, R]的所有整数中&#xff0c;数字2出现的次数。 比如给定范围[2, 22]&#xff0c;数字2在数2中出现了1次&#xff0c;在数12中出现1次…