1、最大子段和问题

问题描述:给定长度为n的整数序列,a[1…n], 求[1,n]某个子区间[i , j],使得a[i]+…+a[j]和最大。
示例:输入:(-2,11,-4,13,-5,2)
输出:最大子段和为20,所求子区间为[2,4]

2、拾捡硬币问题

问题描述:假如有n 个硬币排在一行,要求拾取其中的子序列,该序列的累加面值最大,但不能拾取相邻的两个硬币。
示例:输入5; 1; 2; 10; 6; 2,
输出:Max=17 (5,10,2)

3、 矩阵连乘问题

问题描述:矩阵连乘问题是通过给矩阵连乘时加括号,使得总的计算量最小。
示例:输入:[[49, 29], [29, 32], [32, 77], [77, 13], [13, 59]],
输出:((A1(A2(A3A4)))A5)

4、最短公共超序列问题

问题描述:给出两个字符串str1和str2,返回同时以str1和str2作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。如果从字符串 T 中删除一些字符(也可能不删除,并且选出的这些字符可以位于T中的任意位置),可以得到字符串 S,那么S就是T的子序列。设1<=str1.length, str2.length<=1000,str1和str2都由小写英文字母组成。
示例:输入:str1 = “abac”, str2 = “cab”
输出:“cabac”
解释:str1 = “abac” 是 “cabac” 的一个子串,因为可以删去 “cabac” 的第一个 "c"得到 “abac”。 str2 = “cab” 是 “cabac” 的一个子串,因为可以删去 “cabac” 末尾的 “ac” 得到 “cab”。最终给出的答案是满足上述属性的最短字符串。

5、对于一个n=5的关键字集合,搜索概率如下表,请构造其最优二分搜索树。

6、买卖股票的最佳时机

问题描述:给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例1:输入: [2,4,1], k = 2
输出: 2
解释: 在第 1 天 (股票价格=2)的时候买入,在第2天 (股票价格=4)的时候卖出,这笔交易所能获得利润=4-2=2 。
示例2:输入: [3,2,6,5,0,3], k = 2
输出: 7
解释: 在第 2 天 (股票价格=2) 的时候买入,在第3天 (股票价格=6)的时候卖出, 这笔交易所能获得利润= 6-2=4。随后,在第5天(股票价格=0)的时候买入,在第6天(股票价格=3)的时候卖出, 这笔交易所能获得利润=3-0=3

7、天平秤金条问题

问题描述:有30根金条,其中一根比其它的要重,请问用一个天平至少秤几次可以将这个重的金条找出来。
示例1:输入:[10, 10, 10, 10, 10, 11]
输出:The fake coin is coin 6 in the original list Number of weighings: 2
示例2:输入:[10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 11, 10, 10]
输出:The fake coin is coin 25 in the original list Number of weighings: 3

8、动态规划解最短路径问题

问题描述:从某顶点出发,沿图的边到达另一顶点所经过的路径中,求各边上权值之和最小的一条路径——最短路径。
示例:输入如下图(图的输入形式自行确定):
输出:从A到G的最短路径长度为: 18 经过的结点为: [‘B1’, ‘C2’, ‘D1’, ‘E2’, ‘F2’]
二、实验设备(环境)及要求
PC机,Windows 10

三、实验内容及结果
(包括实验过程、实验数据、实验结果及分析,实验代码另外单独附页)
1、最大子段和问题
问题描述:给定长度为n的整数序列,a[1…n], 求[1,n]某个子区间[i , j],使得a[i]+…+a[j]和最大。
示例:输入:(-2,11,-4,13,-5,2)
输出:最大子段和为20,所求子区间为[2,4]

想法:要求最大字段和与所求区间,即从0开始相加,依次记录newsum,并用begintemp与endtemp记录区间,用maxsum保存最大的sum,并且每次新的maxsum出现时重新记录begin与end区间,当sum小于0后,证明前面sum的只会使sum变小,则从i+1重新开始相加并记录newsum,并重新记录begintemp与endtemp,每次新的maxsum出现时重新记录begin与end区间。

def maxSubSum(arr):maxsum=0begin,end=0,0newsum=0for i in range(len(arr)):if newsum<0:#当num小于0,则从arr[i]开始新的sum值计算,并重新记录newsum与beginTempnewsum=arr[i]beginTemp=i+1  else:#如果newsum大于0,则继续加arr[i],并记录endTempnewsum=newsum+arr[i]endTemp=i+1if newsum>maxsum:#如果newsum大于maxsum,则给maxsum赋新值,并将记录的beginTemp与endTemp赋值maxsum=newsumbegin=beginTempend=endTempreturn maxsum,begin,end#返回最大字段和maxsum,区间首尾begin,end
arr=[-2,11,-4,13,-5,2]
maxsum,begin,end=maxSubSum(arr)
print('最大子段和为',end='')
print(maxsum)
print('所求子区间为',end='')
print('['+str(begin)+','+str(end)+']')

2、拾捡硬币问题
问题描述:假如有n 个硬币排在一行,要求拾取其中的子序列,该序列的累加面值最大,但不能拾取相邻的两个硬币。
示例:输入5; 1; 2; 10; 6; 2,
输出:Max=17 (5,10,2)

def dp_maxNonAdjacentSum(arr):#非递归动态规划解决不相邻的最大和opt=(len(arr)+1)*[0]#初始化opt数组记录最大值temp=(len(arr)+1)*['']#初始化temp数组记录opt值的序列opt[1]=arr[0]#opt[1]取arr[0],temp[1]记录取值temp[1]=str(opt[1])opt[2]=max(arr[0],arr[1])#opt[2]取max(arr[0],arr[1]),temp记录取值temp[2]=str(opt[2])for i in range(3,len(arr)+1):A=opt[i-2]+arr[i-1]#A表示取arr[i-1],则A再加上opt[i-2]B=opt[i-1]#B表示不取arr[i-1],则B=opt[i-1]if A>B:#当A大于B时,opt[i]=A,temp[i]记录取值opt[i]=Atemp[i]=temp[i-2]+' '+str(arr[i-1])else:#当B大于等于A时,opt[i]=B,temp[i]记录取值opt[i]=Btemp[i]=temp[i-1]return opt[len(arr)],temp[len(arr)]#返回opt[i]与子序列
arr=[5,1,2,10,6,2]
maxNonAdjacentSum,Subsequence=dp_maxNonAdjacentSum(arr)
print('Max='+str(maxNonAdjacentSum)+'('+Subsequence+')')

2.两个数组opt记录最大值,temp记录选择的硬币,opt【i】为第1个硬币到第i个硬币的最大值,有两种情况,分为选第i-1硬币时A=opt[i-2]+arr[i-1]与不选i-1硬币B=opt[i-1],故A与B中的最大值,同时给temp记录选取的硬币,并依次遍历。

3、 矩阵连乘问题
问题描述:矩阵连乘问题是通过给矩阵连乘时加括号,使得总的计算量最小。
示例:输入:[[49, 29], [29, 32], [32, 77], [77, 13], [13, 59]],
输出:((A1(A2(A3A4)))A5)
3.规划解决矩阵连乘,2个数组m s分别记录最少乘法次数与分割点的值,并用3次for循坏依次求出m,s[i][j],

import numpy
def MatrixChainOrder(p):n=len(p)-1m=numpy.zeros((n+1,n+1))#m[i][j]用来记录Ai到Aj的最少乘法次数s=numpy.zeros((n+1,n+1))#s[i][j]用来记录Ai到Aj的最优括号化方案的分割点k的值for l in range(2,n+1):#l表示长度for i in range(1,n-l+2):j=i+l-1m[i][j]=float("inf")for k in range(i,j):#遍历k从i到j所有以k为分割点的括号方案temp=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j]#以k为分割点的方案的乘法次数计入tempif m[i][j]>temp:#取k从i到j方案中的最优方案m[i][j]=temps[i][j]=int(k)return m,s
def printOptimalParens(s,i,j):#输出最优括号方案,ij表示范围,s[i][j]为记录的最优括号方案的分割点k的值if i==j:#当i=j时就输出Aiprint ('A'+str(i),end='')else:#当i不等于j时,输出i到k与k到j的最优括号方案print ('(',end='')printOptimalParens(s,i,int(s[i][j]))printOptimalParens(s,int(s[i][j])+1,j)print(')',end='')
p=[49,29,32,77,13,59]
m,s=MatrixChainOrder(p)
printOptimalParens(s,1,len(p)-1)

4、最短公共超序列问题
问题描述:给出两个字符串str1和str2,返回同时以str1和str2作为子序列的最短字符串。如果答案不止一个,则可以返回满足条件的任意一个答案。如果从字符串 T 中删除一些字符(也可能不删除,并且选出的这些字符可以位于T中的任意位置),可以得到字符串 S,那么S就是T的子序列。设1<=str1.length, str2.length<=1000,str1和str2都由小写英文字母组成。

4.要求最短共超序列,即先用动态规划求出最长公共子序列lcs,最短公共超序列scs即为两个字符串的最长公共子序列LCS+第一个字符串除去LCS之后的序列+第二个字符串除去LCS之后的序列。

def shortestCommonSuperSequence(str1,str2):m=len(str1)n=len(str2)dp=[['']*(n+1) for i in range(m+1)]#定义dp数组记录最短公共子序列for i in range(1,m+1):for j in range(1,n+1):if(str1[i-1]==str2[j-1]):#当str1[i-1]==str2[j-1],dp[i][j]为dp[i-1][j-1]+str1[i-1]#dp[i][j]记录str[1-1]与str[j-1]的最短公共子序列dp[i][j]=dp[i-1][j-1]+str1[i-1]else:#如果str1[i-1]与str2[j-1]不相同时#则令dp[i][j]取dp[i-1][j]与dp[i][j-1]中的最长子序列if len(dp[i-1][j]) > len(dp[i][j-1]):dp[i][j]=dp[i-1][j]else:dp[i][j]=dp[i][j-1]lcs=dp[i][j]#lcs即为最长公共子序列等于dp[i][j]i,j=0,0scs=''for char in lcs:#最短公共超序列scs即为两个字符串的最长公共子序列LCS+第一个字符串除去LCS之后的序列+第二个字符串除去LCS之后的序列。while(i<m and str1[i]!=char):#i<m时若str1[i]!=charstr1[i]#即str1[i]不属于最长公共子序列LCS,则scs加上str1[i]scs+=str1[i]i=i+1while(j<n and str2[j]!=char):#j<n时若str2[j]!=char#即str2[j]不属于最长公共子序列LCS,则scs加上str2[j]scs+=str2[j]j=j+1scs+=char#scs加上循环的最长公共子序列LCS,i=i+1,j=j+1i=i+1j=j+1scs+=str1[i:]+str2[j:]#当加完LCS后,再加上str1[i:]与str2[j:],即加上最长公共子序列LCS之后的部分return scs
str1 = "abac"
str2 = "cab"
print(shortestCommonSuperSequence(str1,str2))

5、对于一个n=5的关键字集合,搜索概率如下表,请构造其最优二分搜索树。

.要找到最优二叉搜索树, e[i][j]用来记录包含k[i]到k[j]的最优二次搜索树的期望代价w[i][j]为k[i]到k[j]的所有子树的概率之和, e[i][j]=max(e[i][r-1]+e[r+1][j]+w[i][j]),r从1到j为根节点的位置,动态规划依次求出e[i][j],并使用flag为0,表示为根节点,flag为-1,表示k[root[i][j]]为左孩子,flag为1,表示k[root[i][j]]为右孩子,当j=i-1时,子树只包括伪关键字d[i-1]等输出最优二叉搜索树

def OPTIMALBST(p,q,n):e=[[0]*(n+2) for i in range(n+2)]#e[i][j]用来记录包含k[i]到k[j]的最优二次搜索树的期望代价w=[[0]*(n+2) for i in range(n+2)]#w[i][j]为k[i]到k[j]的所有子树的概率之和root=[[0]*(n+1) for i in range(n+1)]#root[i][j]保存根节点k[r]的下标rfor i in range(1,n+2):#当j=i-1时,子树只包括伪关键字d[i-1]e[i][i-1]=q[i-1]w[i][i-1]=q[i-1]for l in range(1,n+1):#l表示长度,从1到nfor i in range(1,n-l+2):j=i+l-1e[i][j]=float('inf')w[i][j]=w[i][j-1]+p[i]+p[j]for r in range(i,j+1):t=e[i][r-1]+e[r+1][j]+w[i][j]#t记录以k[r]为根节点的从k[i]到k[j]的搜索代价if t<e[i][j]:#取最优的二叉搜索树e[i][j]=troot[i][j]=rreturn e,root
def printOPTIMALBST(i,j,flag):#输出最优二叉树的结构if(i<=j):#当j>=i时if flag==0:#flag为0,表示为根节点print('k'+str(root[i][j])+'为根')elif flag==-1:#flag为-1,表示k[root[i][j]]为左孩子print('k'+str(root[i][j])+'为k'+str(j+1)+'的左孩子')else:#flag为1,表示k[root[i][j]]为右孩子print('k'+str(root[i][j])+'为k'+str(i-1)+'的右孩子')printOPTIMALBST(i,root[i][j]-1,-1)printOPTIMALBST(root[i][j]+1,j,1)elif j==i-1:#当j=i-1时,子树只包括伪关键字d[i-1]if flag==-1:print('d'+str(j)+'为k'+str(j+1)+'的左孩子')elif flag==1:print('d'+str(j)+'为k'+str(i-1)+'的右孩子')
p=[0,0.15,0.10,0.05,0.10,0.20]
q=[0.05,0.10,0.05,0.05,0.05,0.10]
n=5
e,root=OPTIMALBST(p,q,n)
print('最优二叉搜索树为')
printOPTIMALBST(1,n,0)

6、买卖股票的最佳时机
问题描述:给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例1:输入: [2,4,1], k = 2
输出: 2
解释: 在第 1 天 (股票价格=2)的时候买入,在第2天 (股票价格=4)的时候卖出,这笔交易所能获得利润=4-2=2 。
示例2:输入: [3,2,6,5,0,3], k = 2
输出: 7
解释: 在第 2 天 (股票价格=2) 的时候买入,在第3天 (股票价格=6)的时候卖出, 这笔交易所能获得利润= 6-2=4。随后,在第5天(股票价格=0)的时候买入,在第6天(股票价格=3)的时候卖出, 这笔交易所能获得利润=3-0=3

在这里插入代码片

要求最大利益,且用k定义买卖的次数,则只有用3维数组profit[i][j][0]表示第i天第j次交易,身上没有股票时的最大利益profit[i][j][1]表示第i天地j次交易但身上有股票时的最大利益,并且对profit[i][j][0]与profit[i][j][1]都有2种求值的方法,在第i天可以买(卖)股票或不买卖股票,且还要用j记录是第几次交易,所有第i天要求profit[i][0][0],profit[i][0][1],profit[i][j][0],profit[i][j][1](j从1到k-1),profit[i][k][0],每种都要取2种求值方法的最大值,而最后的求解的最大值maxProfit=profit[len(prices)-1][j][0]

def maxProfit(prices,k):profit=[[[0]*2 for i in range(k+1)]for i in range(len(prices))]#profit[i][j][0]表示第i天第j次交易,身上没有股票时的最大利益#profit[i][j][1]表示第i天地j次交易但身上有股票时的最大利益profit[0][0][0],profit[0][0][1]=0,-prices[0]for i in range(1,k+1):profit[0][i][0],profit[0][1][1]=-float("inf"),-float("inf")for i in range(1,len(prices)):profit[i][0][0]=profit[i-1][0][0]#第i天第0次交易无股票等于第i-1天第0次交易profit[i][0][1]=max(profit[i-1][0][1],profit[i-1][0][0]-prices[i])#第i天第0次交易但有股票的值等于第i天没有买股票即profit[i-1][0][1]和第i天买股票即profit[i-1][0][0]-prices[i]的利益的最大值for j in range(1,k):profit[i][j][0]=max(profit[i-1][j][0],profit[i-1][j-1][1]+prices[i])#第i天第j次无股票的值等于第i天没有买股票和第i天买股票的利益的最大值profit[i][j][1]=max(profit[i-1][j][1],profit[i-1][j][0]-prices[i])#第i天第j次有股票的值等于第i天没有卖股票即profit[i-1][j][1]和第i天卖股票即profit[i-1][j][0]-prices[i]的最大值profit[i][k][0]=max(profit[i-1][k][0],profit[i-1][k-1][1]+prices[i])#第i天第k次无股票的值等于第i-1天已进行k次交易即profit[i-1][k][0]与第i天刚完成第k次交易profit[i-1][k-1][1]+prices[i]的最大值maxProfit=-float("inf")for j in range(0,k+1):#maxProfit等于最后一天的第0次交易到第k次交易中的最大值if profit[len(prices)-1][j][0]>maxProfit:maxProfit=profit[len(prices)-1][j][0]return maxProfit
prices=[3,2,6,5,0,3]
k=2
print(maxProfit(prices,k))

7、天平秤金条问题
问题描述:有30根金条,其中一根比其它的要重,请问用一个天平至少秤几次可以将这个重的金条找出来。
示例1:输入:[10, 10, 10, 10, 10, 11]
输出:The fake coin is coin 6 in the original list Number of weighings: 2
示例2:输入:[10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 11, 10, 10]
输出:The fake coin is coin 25 in the original list Number of weighings: 3
7求比较重的金块,首先想到平分金块,但当我把程序后发现与要求输出的不一样,刚开始以为是程序错了,结果发现是算法错了,用最少的步数要找到重的金快可以用3分法,比较前2堆金快,若不一样则在重的那一堆继续3分,若一样则在第3份继续3分,而且这种方法的算法也更简单,不需要考虑金快为奇数还是偶数,在程序中,由于要找到是第几块金快比较重,使用left与right作为函数参数来记录金快的位置

def HeavierGold(golds,left,right):#golds为金块重量,left,right为比较的范围l=(right-left +1)//3#使用3分法,将金块分为3份global number#全局变量为number,记录称重的次数,初值为-1,每次称重前+1number+=1if right == left:#right==left,即为较重的金块return(left+1)elif left+1 == right:#left+1 == right,则较重的金块在这2块之中,故返回较重的金块if golds[right] < golds[left]:return(left+1)else:return(right+1)if sum(golds[left:left+l])==sum(golds[left+l:left+2*l]):#如果第一堆金块重量等于第二堆金块重量,则返回对第三堆金块的寻找return HeavierGold(golds,left+2*l,right)elif sum(golds[left:left+l])<sum(golds[left+l:left+2*l]):#如果第一堆金块重量小于第二堆金块重量,则返回对第二堆金块的寻找return HeavierGold(golds,left+l,left+2*l-1)else:#如果第一堆金块重量大于第二堆金块重量,则返回对第一堆金块的寻找return HeavierGold(golds,left,left+l-1)
golds=[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,10,10]
number=-1
i=HeavierGold(golds,0,len(golds)-1)
print('The hevaier gold is coin '+str(i)+'in the original list')
print('Number of weighings:'+str(number))

.

8、动态规划解最短路径问题
问题描述:从某顶点出发,沿图的边到达另一顶点所经过的路径中,求各边上权值之和最小的一条路径——最短路径。
示例:输入如下图(图的输入形式自行确定):
输出:从A到G的最短路径长度为: 18 经过的结点为: [‘B1’, ‘C2’, ‘D1’, ‘E2’, ‘F2’]
8.求多段图的最短路径长度,先用邻接矩阵表示出多段图,在用动态规划从终点到起点依次求出每一段的最短路径长度,并且用字典将邻接矩阵的序号与结点A1 B1等相连,最后输出进过的结点

def shortestPath(cost,path,d):for i in range(n-1,0,-1):#i从第n-1到第1个结点表示起点temp=0min=c[i][temp]+cost[temp]for j in range(0,n+1):#j从0到n表示目的点if c[i][j]!=float("inf"):#当c[i][j]不为无穷大,即从i到j可以到达if (c[i][j]+cost[j])<min:#取最小的c[i][j]min=c[i][j]+cost[j]temp=jcost[i]=c[i][temp]+cost[temp]#cost[i]记录i到n的最短路径d[i]=temppath[1]=1path[k]=nfor i in range(2,k):path[i]=d[path[i-1]]
global n,k#n为结点个数,k为多段图的段数
n,k=16,7
c=[[float("inf") for i in range(n+1)]for i in range(n+1)]#用邻接矩阵表示多段图
c[1][2]=5
c[1][3]=3
c[2][4]=1
c[2][5]=3
c[2][6]=6
c[3][5]=8
c[3][6]=7
c[3][7]=6
c[4][8]=6
c[4][9]=8
c[5][8]=3
c[5][9]=5
c[6][9]=3
c[6][10]=3
c[7][9]=8
c[7][10]=4
c[8][11]=2
c[8][12]=2
c[9][12]=1
c[9][13]=2
c[10][12]=3
c[10][13]=3
c[11][14]=3
c[11][15]=5
c[12][14]=5
c[12][15]=2
c[13][14]=6
c[13][15]=6
c[14][16]=4
c[15][16]=3
cost=[0]*(n+1)#cost用来记录i到n的最短路径长度
d=[0]*n
path=[0]*(k+1)#path记录最短路径的进过的结点
shortestPath(cost,path,d)
map={'1':'A','2':'B1','3':'B2','4':'C1','5':'C2','6':'C3','7':'C4','8':'D1','9':'D2','10':'D3','11':'E1','12':'E2','13':'E3','14':'F1','15':'F2','16':'G'}
#map是字典用来记录结点序号与结点名称的对应
print("从A到G的最短路径长度为: "+str(cost[1]))
print('经过的结点为: [',end='')
for i in range(2,k-1):print("'"+map[str(path[i])]+"',",end='')
print(map[str(path[k-1])]+"'] ")

最大子段和问题,拾捡硬币问题, 矩阵连乘问题,最短公共超序列问题,最优二分搜索树,买卖股票的最佳时机,天平秤金条问题,动态规划解最短路径问题相关推荐

  1. Python每日一练(20230307) 重复DNA序列、搜索二维矩阵、买卖股票的最佳时机IV

    目录 1. 重复的DNA序列  ★★ 2. 搜索二维矩阵  ★★ 3. 买卖股票的最佳时机 IV  ★★★

  2. 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

    [51单片机]矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一.环境 二.硬件部分 1. Proteus新建工程 2. 添加元件 3.连接线路 4.硬件效果 三.软件部分 1 ...

  3. 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授

    嵌入矩阵 (Embedding Matrix) 接下来我们要将学习词嵌入这一问题具体化,当你应用算法来学习词嵌入时,实际上是学习一个嵌入矩阵,我们来看一下这是什么意思. 和之前一样,假设我们的词汇表含 ...

  4. 矩阵连乘 动态规划_利用动态规划解LeetCode第62题:不同路径

    题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为&q ...

  5. 最大子段和动态规划_动态规划解最大子段和问题

    1 动态规划 1.1 基本思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题. 与分治法的区别在于,适用于动态规划算法求解的问题,经分解得到的子问题往往不是互相独立的:若用分 ...

  6. java硬币兑换_java程序题:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法...

    满意答案 alexjia301 2015.01.15 采纳率:42%    等级:6 已帮助:257人 123456789101112131415161718192021222324252627/** ...

  7. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  8. C和C++算法完整教程专栏完整目录

    C和C++算法完整教程专栏完整目录 专栏说明如下 完整专栏目录如下 专栏说明如下 内容:C和C++算法完整教程 数量:680篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加 ...

  9. Leetcode学习之动态规划

    动态规划学习内容 1. 动态规划理论基础 什么是动态规划 动态规划的解题步骤 动态规划应该如何debug 2. 斐波那契数 思路 3. 爬楼梯 思路 4. 使用最小关系爬楼梯 思路 5. 不同路径 思 ...

  10. 面试刷题LeetCode经典100道

    准备面试刷题,100道经典LeetCode题目奉上. 题号 英文题名 中文题名 难度 likes 数 标签 1 Two Sum 两数之和 Easy 11712 数组,哈希表 2 Add Two Num ...

最新文章

  1. c语言 静态链表插入排序,数据结构C语言版 表插入排序
  2. Redis是如何实现点赞、取消点赞的?
  3. 魔兽世界---屠夫(Just a Hook)
  4. C++ 的多态性与虚函数
  5. volatile 关键字解析
  6. python rpa_(RPA学习)Python 之 Pathlib 模块
  7. excel的mysql语言,Mysql中文乱码及导出sql语句和Excel的相关解决方法
  8. Java 获取目录的大小
  9. 【uni-app】使用定义在App.vue的方法
  10. arcgis select by attributes一次选多个_优化体系--记一次生产数据库sql优化过程--组合索引...
  11. 盖洛普优势识别器2.0-《现在.发现你的优势》升级版
  12. 【语义分割】 DRANet Scene Segmentation With Dual Relation-Aware Attention Network
  13. 07、自己写库—构建库函数雏形
  14. Gabor变换(2)
  15. 【课程全解】-UML软件建模设计
  16. Oracle 删除数据后释放数据文件所占磁盘空间(表空间降高水位)
  17. android 设置路由器,安卓手机怎么设置路由器?
  18. MBA-day28 数的概念-练习题
  19. 解决pig在MapReduce模式下执行任务失败,提示Failed to read data的问题
  20. 5-4 区块链与药品溯源

热门文章

  1. 聚集导航的设计和实现之读书笔记
  2. buuctf 粗心的小李
  3. 在 Linux 上构建网络路由器
  4. grid布局实现居中后最后一行左边对齐
  5. 《理财达人带你玩转基金,实现资产翻倍》笔记(一)
  6. PyTorch深度学习实践——反向传播
  7. vue预览下载PDF文件
  8. 多设备工作室自动阅读如何避免账号被封
  9. 什么是H1标签?2021 年SEO最佳实践
  10. 「基于Python技术的智慧中医商业项目」问诊模块后台管理