算法学习笔记
天上的西红柿
如果人只能活一次,就让梦想比现实高那么一点吧。
展开
-
动态规划法求解01背包问题C++代码
动态规划法求解01背包问题以下代码为动态规划法求解01背包问题并统计代码运行300遍的平均运行时间。#include <iostream>#include <windows.h>#include <iomanip>#include <time.h>using namespace std;int KnapSack(int w[], int v[], int n, int C){ int V[n+1][C+1]; int i, j原创 2020-05-20 10:39:07 · 2148 阅读 · 0 评论 -
动态规划法求解游艇租用问题C++代码
动态规划法求解游艇租用问题游艇租用问题:长江旅游俱乐部在长江上设置了N个游艇出租站0,1,2,…,N-1,游客在这些站中租用游艇,并在下游的任何一个游艇出租站归还,游艇出租站i到游艇出租站j之间的租金为fee(i,j),0≤i<j≤N-1;试使用动态规划法求出从游艇出租站0到游艇出租站N-1所需的最少租金;使用动态规划法求解游艇租用问题,问题模型为“多源点路径问题”,其核心为Floyd算法的使用设用数组minCost[n][n]表示站点间的最少租金,fee[n][n]表示站点间的直达租金,min原创 2020-05-20 10:26:04 · 1740 阅读 · 0 评论 -
蛮力法求解最大字段和问题C++代码
蛮力法求解最大字段和问题C++代码以下代码实现了用蛮力法求解最大字段和问题,并统计代码运行时间#include <iostream>#include <stdlib.h>#include <windows.h>#include <iomanip>#include <stdio.h>using namespace std;int *maxSum(int a[], int len){ int maxSum = 0;原创 2020-05-20 10:09:05 · 987 阅读 · 0 评论 -
自己编的求最大子段和算法C++代码
自己编的求最大子段和算法C++代码对数组arr[n]分别进行正向和反向累加求和,并求两过程的最大值sum1和sum2,并记录最大时的下标,正向为记为a,逆向记为b,则arr[b]至arr[a]的和即为所求。其算法复杂度为O(2n),高于动态规划法,低于蛮力法。#include <iostream>#include <stdlib.h>using namespace std;int *maxSum(int a[], int len){ int sum = 0;原创 2020-05-20 09:56:28 · 690 阅读 · 0 评论 -
动态规划法求最大子段和问题C++
动态规划法求最大子段和问题给定由n个整数组成的序列(a1, a2, …, an),求该序列形如(ai, ai+1, ai+2,…, ai+n) 的子段和的最大值,当所有整数均为负整数时,其最大子段和为0。依此定义,所求的最优值为:动态规划法代码如下:#include <iostream>#include <stdlib.h>using namespace std;int *maxSum(int a[], int b[], int len){原创 2020-05-20 09:39:30 · 3291 阅读 · 0 评论 -
减治法解决假币问题plus C++代码
减治法解决假币问题plus以下代码是使用减治法查找假币,其中假币与真币的重量关系未知。#include <iostream>#include <stdlib.h>using namespace std;int m=0; //真币质量int Coin(int coin[], int n, int low, int high){ //在a[low]~a[high]中查找假币 int num1, num2, num3; //存储三组原创 2020-05-20 09:29:10 · 1323 阅读 · 0 评论 -
使用KMP算法求解字符串匹配问题C++代码
使用KMP算法求解字符串匹配问题以下代码使用kmp算法实现字符串S和T匹配,并统计了代码运行时间。#include <iostream>#include <stdio.h>#include <windows.h>#include <iomanip>using namespace std;void GetNext(char T[], int next[]){ //求取next值 next[0] = -1; int j=1, k=原创 2020-05-20 09:22:54 · 605 阅读 · 0 评论 -
蛮力法解决字符串匹配问题
蛮力法解决字符串匹配问题以下代码使用蛮力法实现字符串S和T匹配,并统计了代码运行时间。#include <iostream>#include <stdio.h>#include <windows.h>#include <iomanip>using namespace std;int BF(char S[], char T[]){ int i=0,j=0; while((S[i] != '\0') && (T[j原创 2020-05-20 09:17:01 · 943 阅读 · 0 评论 -
递归法求解汉诺塔问题C++代码
递归法求解汉诺塔问题话不多说,上代码:#include<iostream>using namespace std;void Hanoi(int n,char A, char B ,char C){ if(n>1) cout<<A<<"-->"<<C<<endl; else { Hanoi(n-1,A,C,B); cout<<A<<"-->"<<C<<原创 2020-05-20 09:06:23 · 504 阅读 · 0 评论