算法学习
Charlotte_Fu
秃头小伏,烦恼全无,嘿嘿
展开
-
动态规划 0/1背包问题 (Java)
使用动态规划算法求解0/1背包问题注意和背包问题进行区分,0/1背包表示此物品只有两种情况:装入1和不装入0,且容量均为整数import java.util.Scanner;public class Knapsack {public static void main(String[] args) { int n=4;//物品的个数n; int Volume,KnapsackVol=4;//背包的容量KnapsackVol=4; Scanner scan=new Scanner(System.i原创 2021-05-12 16:30:46 · 252 阅读 · 0 评论 -
第三章动态规划 矩阵连乘问题
给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。将矩阵连乘积简记为A[i:j] ,这里i≤j,考察计算A[i:j]的最优计算次序。设这个计算次序在矩阵Ak和Ak+1之间将矩阵链断开,i≤k<j。计算量:A [ i : k ]的计算量加上A [ k+1: j ] 的计算量,再加上A[i:k]和A[k+1:j]相乘的计算量。例题:设要计算矩阵连乘乘积A1A2A3A4..原创 2021-05-07 21:12:08 · 1265 阅读 · 0 评论 -
PTA 整型关键字的散列映射
7-42 整型关键字的散列映射 (25 分)给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key) = Key % P将关键字映射到长度为P的散列表中。用线性探测法解决冲突。输入格式:输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。输出格式:在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。输入样例:4 524 15 6原创 2021-04-23 19:14:32 · 358 阅读 · 0 评论 -
期望为线性时间的选择算法(随机)
C++代码如下:(如有错误望友友们指正,万分感谢)期望为线性时间的选择算法#include<iostream>using namespace std;//number = rand() % (MAX_VALUE - MIN_VALUE + 1) + MIN_VALUE;int Randompartion(int *a,int p,int r)//和快排的Partition类似,只不过使用了rand()获取随机数{ int i=rand()%(r-p+1)+p;//获取随机原创 2021-04-23 16:22:57 · 136 阅读 · 0 评论 -
例2-5整数划分问题
整数划分问题n为整数和,n1为最大的加数,将最大加数n1不大于m的划分个数记作Divide(n,m);代码如下:#include<iostream>using namespace std;int Divide(int n,int m){ if(n==0||m==0) return 0; if(n==1||m==1)//和为n,n=1或者m=1,不管另一个参数的值为什么,结果都只有一种 return 1; if(n<m原创 2021-04-23 11:57:40 · 245 阅读 · 0 评论 -
HanoiTower汉诺塔问题(递归C++)
问题:解决将n个盘子从A移动到B,借助辅助盘C,需要多少次?描述每一步过程代码如下:#include<iostream>#include<cstdio>using namespace std;int num;//移动的总次数;void Hanoi(int n,char a,char b,char c)//从a移动到b,c为辅助{ if(n==1) { num++; printf("将%d盘从%c移动到%c\n",n,a,b原创 2021-04-23 11:13:14 · 136 阅读 · 0 评论