算法设计与分析课后总结

2023-11-10

算法设计与分析课后总结

算法设计与分析

主要包括课后习题、算法的总结

第1章 算法设计基础

课后习题

1、设计算法求数组的相差最小的两个元素
思路:快排+顺序遍历
快排函数:

int part(int* r, int low, int hight)  
{
	int i = low, j = hight, pivot = r[low]; 
	while (i < j)
	{
		while (i<j && r[j]>pivot) j--;
		if (i < j)	swap(r[i++], r[j]);  
		while (i < j && r[i] <= pivot) 	i++;
		if (i < j)	swap(r[i], r[j--]);  
	}
	return i;  
}
void Quicksort(int* r, int low, int hight)
{
	int mid;
	if (low < hight)
	{
		mid = part(r, low, hight);  // 返回基准元素位置
		Quicksort(r, low, mid - 1); // 左区间递归快速排序
		Quicksort(r, mid+1, hight); // 右区间递归快速排序
	}
}

相差最小值的函数:

int Min(int *r,int n)
{
	Quicksort(r,0,n-1);
	int min=MAX;
	for(int i=1;i<n;i++){
		if((a[i]-a[i-1])<min)
			min=a[i]-a[i-1];
	return min;	
}

2、设计算法找出数组a[n]中即不是最大,也不是最小的元素
思想:找出3个不相同的数,在三个数中找到中间值即可

int mid(int a,int b,int c)//找三个数的中间值
{
if(a>b){
	if(b>c)return b;
	else if(a>c)return c;
	else return a;
}
else{
	if(a>c)return a;
	else if(b>c)return c;
	else return b;
}
}

int mid_find(int *r,int n)//找出三个不同的数
{
	int a=r[0];
	int i=1;
	while(i<n&&r[i]==a)i++;
	if(i==n)return -1;
	int b=r[i];
	while(i<n&&r[i]==b)i++;
	if(i==n)return -1;
	int c=r[i];
	return mid(a,b,c);
}

3、n至少为多大时,n个1组成的整数能被2013整除
这个题我写着有那么亿丢丢缺点,long long 范围里的数都不能被2013整除
大整数的话,写着又很麻烦。如果有好的想法,欢迎探讨

int main()
{
	long long n=11111;
	while(n%2013){
		n*=10;
		n+=1;
	}
	cout<<n;
}

第二章算法分析基础

课后习题

1、考虑下面算法,回答下列问题,算法完成什么功能?算法的基本语句时什么?基本语句执行了多少次?

(1)

int Stery(int n)
{
	int S=0;
	for(int i=1;i<=n;i++)
		S+=i*i;
	return S;
}

完成功能:计算 ∑ i = 1 n i 2 \sum_{i=1}^n i^2 i=1ni2
基本语句:S+=i*i;
算法复杂度: O ( n ) O(n) O(n)
(2)

int Q(int n)
{
	if(n==1)
		return 1;
	else
		return Q(n-1)+2*n-1;
}

完成功能: ∑ i = 1 n ( 2 n − 1 ) = n 2 \sum_{i=1}^n(2n-1)=n^2 i=1n(2n1)=n2
基础语句:2*n-1
时间复杂度: O ( n ) O(n) O(n)

2、分析以下程序段中基本语句的执行次数,要求列出计算公式

(1)

for(i=1;i<=n;i++)
	if(2*i<=n)
		for(j=2*i;j<=n;j++)
			y+=i*j;

基础语句:y+=i*j
执行次数: ∑ i = 1 n / 2 ( n − 2 i ) = n ( n − 2 ) 4 \sum_{i=1}^{n/2}(n-2i)=\frac{n(n-2)}{4} i=1n/2(n2i)=4n(n2)
时间复杂度: O ( n 2 ) O(n^2) O(n2)
(2)

m=0;
for(i=1;i<=n;i++)
	for(j=1;j<=2*i;j++)
		m+=1;

基础语句:m+=1
执行次数: ∑ i = 1 n 2 i = n ( n + 1 ) \sum_{i=1}^n2i=n(n+1) i=1n2i=n(n+1)
时间复杂度: O ( n 2 ) O(n^2) O(n2)

3、使用递归扩展技术求解下列公式

(1) T ( n ) = { 4 n = 1 3 T ( n − 1 ) n > 1 T(n) = \begin{cases} 4 &n=1 \\ 3T(n-1) & n>1 \\ \end{cases} T(n)={43T(n1)n=1n>1
解: T ( n ) = 3 T ( n − 1 ) = . . . = 3 n − 1 T ( 1 ) = 4 × 3 n − 1 T(n)=3T(n-1)=...=3^{n-1}T(1)=4×3^{n-1} T(n)=3T(n1)=...=3n1T(1)=4×3n1
(2) T ( n ) = { 1 n = 1 2 T ( n / 3 ) + n n > 1 T(n)= \begin{cases} 1 &n=1\\ 2T(n/3)+n &n>1\\ \end{cases} T(n)={12T(n/3)+nn=1n>1
解:令 n = 3 k n=3^k n=3k
T ( n ) = 2 T ( n / 3 ) + n = 2 ( 2 T ( n / 3 2 ) + n / 3 ) + n = . . . = 2 k ∑ i = 0 k ( 3 k / 2 i ) T(n)=2T(n/3)+n=2(2T(n/3^2)+n/3)+n=...=2^k\sum_{i=0}^k(3^k/2^i) T(n)=2T(n/3)+n=2(2T(n/32)+n/3)+n=...=2ki=0k(3k/2i)

第三章 蛮力法

课后习题

1、设计算法,在数组r[n]中删除所有元素值为x的元素,要求时间复杂性为 O ( n ) O(n) O(n),空间复杂性为 O ( 1 ) O(1) O(1)

void dlt(int r*,int n,int x)
{
	int j=0;
	for(int i=0;i<n;i++)
	{
		if(r[i]!=x)
		{
			r[j]=r[i];
			j++;
		]
	}
}

2、设计算法,将数组r[n]中删除重复元素,要求移动次数较少并使剩余元素的相对次序保持不变

算法思想:双重循环找重复值,将重复元素设置为固定值flag,再用上一题的代码删除即可

void dlt2(int r*,int n)
{
	flag=-1;
	for(int i=0;i<n;i++)
	{
		if(i==flag)continue;
		for(int j=i+1;j++)
		{
			if(a[i]==a[j])
				a[j]=flag;
		}
	}
	dlt(r,flag);
}

3、设表 A = { a 1 , a 2 , . . . , a n } A=\{a_1,a_2,...,a_n\} A={a1,a2,...,an},将A拆成B和C两个表,使A中值>=0的元素存入表B,值小于<0的元素存入表C,不外设空间,利用A的空间

算法思想:将A分为左边和右边,左边的数大于0,右边的数小于0即可

int divorce(int A*,int n)
{
	int i=0,j=n-1;
	while(i<j){
		while(A[i]>=0&&i<j)i++;//找到左边小于0的
		while(A[j]<0&&i<j)j--;//找到右边大于等于0的
		swap(A[i],A[j]);//交换
	}
}

第四章 分治法

课后习题

1、对于待排序列(5,3,1,9)分别画出归并和快排的递归运行轨迹

归并:
划分阶段:
(5,3,1,9)
(5,3),(1,9)
(5),(3),(1),(9)
归并阶段:
(3,5),(1,9)
(1,3,5,9)
快排:
(5,3,1,9)
5为基准点,将1与5交换
(1,3)5(9)
(1,3,5,9)

2、设计分治算法求数组最大元素,并分析时间性能

int Max(int *A,int low,int hight)
{
	if(low>hight)
		return -1;
	else if(low==hight)return A[low];
	int mid=(low+hight)/2;
	return max(Max(A,low,mid),Max(A,mid+1,hight));
}

算法复杂度: O ( n ) O(n) O(n)

3、在有序序列 ( r 1 , r 2 , . . . , r n ) (r_1,r_2,...,r_n) (r1,r2,...,rn)中存在需序号 i ( 1 < = i < = n ) i(1<=i<=n) i1<=i<=n使得 r i = n r_i=n ri=n,设计一个分治算法找到这个元素

int find(int *A,int low,int height)
{
 	if(low>hight)
		return -1;
	if(low==height)
	{
		if(A[low]==low) return low;
		else return -1;
	}
	int mid=(low+hight)/2;
	if(A[mid]=mid)
	{
		return mid;
	}
	else if(A[mid]>mid)
		return find(A,low,mid-1);
	else
	   return find(A,mid+1,height);
}

4、在一个序列中出现次数最多的元素称为众数,寻找众数

算法思想:先快排,再遍历一遍技术,算法复杂度为 O ( n l o g n + n ) = O ( n l o g n ) O(nlogn+n)=O(nlogn) O(nlogn+n)=O(nlogn)
快排函数:

int part(int* r, int low, int hight)  
{
	int i = low, j = hight, pivot = r[low]; 
	while (i < j)
	{
		while (i<j && r[j]>pivot) j--;
		if (i < j)	swap(r[i++], r[j]);  
		while (i < j && r[i] <= pivot) 	i++;
		if (i < j)	swap(r[i], r[j--]);  
	}
	return i;  
}
void Quicksort(int* r, int low, int hight)
{
	int mid;
	if (low < hight)
	{
		mid = part(r, low, hight);  // 返回基准元素位置
		Quicksort(r, low, mid - 1); // 左区间递归快速排序
		Quicksort(r, mid+1, hight); // 右区间递归快速排序
	}
}

查找众数函数

int mode(int A*,int n)
{
	Quicksort(A,0,n-1);
	int Max=0;
	for(int i=0;i<n;)
	{
		int t=a[i];
		int num=0;
		while(i<n&&t==a[i++])num++;
		Max=max(num,Max);
	}
	return Max;
}

第五章 减治法

课后习题

1、折半查找的递归算法,并分析时间性能

int divfind(int *A,int low,int hight,int x)
{
	if(low>height)
		return false;
	mid=(low+height)/2;
	if(A[mid]==x)
		return mid;
	else if(A[mid]>x)
		return divfind(A,low,mid-1);
	else
		return divfind(A,mid+1,height);
}

时间复杂度 O ( l o g 2 n ) O(log_2n) O(log2n)

2、120硬币问题

我没看懂那个算法,有看懂的大佬麻烦讲一下,比心~
以下为硬币算法的链接:小球称重

第六章 动态规划

课后习题

1、为什么动态规划法需要填表?如何设计表的结构?

动态规划本身是空间换时间,存在表格里,可以减少相同的计算,大大缩短计算时间
表的结构:
一般状态量为表的行
决策量为表的列

2、动态规划求0->12最短路径

Alt
Alt

第7章 贪心法

课后习题

1.贪心法求背包问题,有7个物品,重量分别为(2,3,5,7,1,4,1),对应价值为(10,5,15,7,6,18,3)背包容量W=15,写出求解过程

解题思路:贪心的本质为优先选择单位价值最重的
根据单位价值进行排序得:

物品编号 重量 价值 单位价值
5 1 6 6
1 2 10 5
6 4 18 4.5
3 5 15 3
7 1 3 3
2 3 5 1.7
4 7 7 1

先装5号物品背包已装容量为1,价值为6
再装1号物品背包已装容量为3,价值为16
装6号物品背包已装容量7,价值为34
装3号物品背包已装容量12,价值为49
装7号物品背包已装容量13,价值为52
装2号物品背包已装容量16>15,结束
最优解为{1,0,1,0,1,1,1}

2、 最短链接求TSP

#include<stdio.h>
#include<iostream>
#include<malloc.h> 
using namespace std;


//查找最小边函数  Search 
pair<int,int> Search(int **A,int N,int *flag,int **AF) { //查找最小边

 int min=10e5,a=0,b=0;
 for(int i=0; i<N; i++) {
  for(int j=0; j<i; j++) {
   if(!AF[i][j]&&flag[i]<2&&flag[j]<2&& A[i][j]<min) {//如果这条边没有走过,两边的城市没有同时有两个被走过的边 
    a=i; 
    b=j;
    min=A[i][j];//依次比较 
   }
  }
 }
 flag[a]++;
 flag[b]++;
 AF[a][b]=1;
 return pair<int,int>(a,b);
}



//TSP2
int TSP2(int **A,int N,int *flag,int **AF) {
 int tsp=0,i,j,k;
 for(k=0; k<N; k++) {//选择N次最短边 
  pair<int,int> a=Search(A,N,flag,AF);
  tsp+=A[a.first][a.second];//每次加入最增的最短边 
 }
 return tsp;
}




int main() 
 {
 	
 	//N初始化
	 int N=5; 
 	
	 	
 	//A初始化(城市之间的距离)
 	int **A=(int **)malloc(N*sizeof(int));
	cout<<"输入5个城市之间的距离(0表示城市间不通):"<<endl;
	for(int i=0;i<N;i++)
	{
		A[i]=(int*)malloc(N*sizeof(int));
		for(int j=0;j<N;j++)
		{
			cin>>A[i][j];
		}
	}		 
	
		
	//AF初始化,记录边是否走过 
	int **AF=(int **)malloc(N*sizeof(int));//记是否边走过,初始值设为0,走过设为1
	for(int i=0;i<N;i++)
	{
		AF[i]=(int*)malloc(N*sizeof(int));
		for(int j=0;j<N;j++)
		{
			AF[i][j]=0;
		}
	}
 	  
 	  
 	//flag初始化,记录城市是否走过 
	int *flag=(int *)malloc(N*sizeof(int));//标记是否城市走过,初始值设为0,走进去又走出来成为2 
    for(int i=0;i<N;i++)//设置flag的初值 
	{
		flag[i]=0;
	}
	   
	  	  
    cout<<"最短路径长度:";
	cout<<TSP2(A,N,flag,AF);
 }

3、n个顾客等待问题,使得顾客总等待时间最少

算法思想:快排一下,时间最少的排前面。

4、17/18、11/12埃及分数问题

埃及分数流程:
E=B/A+1;
输出1/E;
A=AE-B;
B
=E;
消除A,B最大公约数;
直到A=1,输出1/B;

第八章 回溯法

课后习题

1、回溯法求解三着色问题

2、回溯法求解作业问题

3、迷宫问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法设计与分析课后总结 的相关文章

  • C++ 维护子类对象的混合集合

    如果我在这里错过了一个相当基本的概念 我很抱歉 但我正在尝试弄清楚如何维护多个类类型的集合 所有类类型都派生自同一个父类 并且在检索它们时仍然可以访问它们的特定于子类的方法从集合中 作为上下文 我有一个基类 BaseClass 和许多类 例
  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp

随机推荐

  • 剑指 Offer 63. 股票的最大利润(java+python)

    假设把某股票的价格按照时间先后顺序存储在数组中 请问买卖该股票一次可能获得的最大利润是多少 示例 1 输入 7 1 5 3 6 4 输出 5 解释 在第 2 天 股票价格 1 的时候买入 在第 5 天 股票价格 6 的时候卖出 最大利润 6
  • 雪花id生成算法

    什么是雪花算法 雪花算法的本质为生成一个64位长度的具有自增性的分布式全局唯一id 在64bits中 会对不同段的位进行划分 可分为 符号段 时间戳段 机器码段 data center worker 自增序列号段 位段详解 第一位 符号位
  • [cesium]

    源码 正在为您运送作品详情 Web3D 三维特效
  • Markdown快速入门教程

    Markdown 的目标是实现 易读易写 并强调它的 可读性 因此Markdown 的语法全由标点符号所组成 并经过严谨慎选 是为了让它们看起来就像所要表达的意思 以下是Markdown 大部分的语法 常用语法 文字样式 文字字体 类别 语
  • float,flex和grid布局

    页面布局往往会影响着整体的结构与项目的样式 通常我们用的布局方式有三种 float flex grid 1 float或position布局 1 1概念 首先对于一个页面来说 有浮动流 文档流 文本流这几种模式 而float布局则是脱离文档
  • MySQL的架构体系

    在对MySQL深入的学习之前 我们首先要了解MySQL的一个完整的架构 首先了解到MySQL是一个开源的数据库管理系统 它相对于Oracle更加地轻量 成本低 随着功能的日益完善 它也变得备受企业的喜爱 尤其是中小企业 有图可知 MySQL
  • 京东云高可用业务架构建设

    本文以 2022 年一个实际项目为基础 来演示在京东云上构建高可用业务的整个过程 公有云及私有云客户可通过使用京东云的弹性 IAAS PAAS 服务 创建高可用 高弹性 高可扩展 高安全的云上业务环境 提升业务 SLA 提升运维自动化水平
  • 某大型项目 三巡工作(服务器巡检脚本)

    bin bash 参数定义 date date Y m d H M S centosVersion awk print NF 1 etc redhat release VERSION date F 日志相关 LOGPATH tmp awr
  • 2022 年企业 Java 面试前复习的正确姿势(已助力 512 人入职大厂)

    前言 这份面试清单是今年 1 月份之后开始收集的 一方面是给公司招聘用 另一方面是想用它来挖掘在 Java 技术栈中 还有一些知识点是我还在探索的 我想找到这些技术盲点 然后修复它 以此来提高自己的技术水平 说实话刚开始的时候整理这些面试题
  • Docker第二篇-Linux和Windows下安装Docker

    文章目录 Docker版本说明 CentOS安装Docker 前提条件 安装 镜像加速 删除Docker CE Windows安装Docker 前提条件 安装 镜像加速 Docker版本说明 Docker 分为 CE 和 EE 两大版本 C
  • 树莓派烧录

    准备工作 树莓派 一张SD卡 SD尽可能的大 不然安装完系统 就没什么空间了 建议64G 软件准备 1 洗卡软件 SDcard Formatter 2 烧录软件 win32diskimager 3 镜像文件 可以从树莓派官网进行下载Rasp
  • MySQL数据行溢出的深入理解

    一 从常见的报错说起 故事的开头我们先来看一个常见的sql报错信息 相信对于这类报错大家一定遇到过很多次了 特别对于OMG这种已内容生产为主要工作核心的BG 在内容线的存储中 数据大一定是个绕不开的话题 这里的数据 大 远不止存储空间占用多
  • jenkins搭建自动化部署(Windows)

    官网 https jenkins io 选择相应版本下载 安装后找到安装目录下jenkins war 可以放在tomcat下运行 也可直接运行命令 java jar jenkins war 启动 关闭命令 net start jenkins
  • mysql 5.6压缩安装_mysql5.6zip格式安装过程

    第一步 到官网下载mysql 5 6 44 winx64的压缩包文件格式 第二步 在我的电脑 gt 属性 gt 高级 gt 环境变量 path变量中添加mysql bin文件夹的路径 第三步 配置完环境变量之后先别忙着启动mysql 我们还
  • 08-分布式

    1 分布式中 接口的幂等性的设计 在高并发场景的架构里 幂等性是必须得保证的 比如说提交作业 查询和删除不在 幂等讨论范围 1 建唯一索引id 每次操作 都根据操作和内容生成唯一的id 在执行之前先判断id是否存在 如果不存在 则 执行后续
  • rem的使用方式

    rem是什么 rem是指相对于根元素的字体大小的单位 在日常开发过程中我们通常把根元素 html body 的字体设置为10px 方便于我们计算 此时子元素的1rem就相当于10px rem与em的区别 各自的优缺点 em子元素字体大小的e
  • CVPR 2019 论文大盘点—人体姿态篇

    CV君盘点了CVPR 2019 中有关人体姿态的论文 其中研究 3D人体姿态估计的论文最多 有 11 篇 研究 2D 姿态估计的 7 篇 姿态迁移 2 篇 人体图像生成 1 篇 人体捕捉 2 篇 另外还有2篇创建了新的基准数据集 姿态估计是
  • python云图

    安装相关插件 python3 m pip install jieba wordcloud matplotlib import matplotlib pyplot as plt import jieba from wordcloud impo
  • 【Spring Boot】【前后端分离】后端接口返回结果统一封装

    文章目录 创建 SpringBoot 项目 封装返回结果 实现返回对象的自动封装 处理异常 测试 最近在尝试使用前后端分离的模式写一个简单的个人博客 遇到接口数据返回结构的问题 在网上查了一圈 发现了一个很好用的方法 在复现的过程中也遇到了
  • 算法设计与分析课后总结

    算法设计与分析课后总结 算法设计与分析 第1章 算法设计基础 课后习题 第二章算法分析基础 课后习题 1 考虑下面算法 回答下列问题 算法完成什么功能 算法的基本语句时什么 基本语句执行了多少次 2 分析以下程序段中基本语句的执行次数 要求