
算法
一拳十个锵锵怪
芜湖
展开
-
动态规划算法-最长公共子序列
这道题主要是理解俩个二位数组,以及找最大值的流程,最近考试周就先不弄详解了。有空在搞。代码很好理解,里面的算法需要时间理解。题目是这样的输入俩个字符串,输出最长公共子序列和长度。#include<iostream>#include<cstring>using namespace std;const int N = 100;char s1[N],s2[N];//定义数组 int len1,len2; //数组长度 int c[N][N],b[N][N]; //原创 2022-01-05 00:44:27 · 605 阅读 · 0 评论 -
递归算法-汉诺塔
这里就简单介绍一下递归问题最经典的例题汉诺塔问题。代码很短主要是理解概念。题目是输入汉诺塔层数,输出如何解决。#include<iostream>using namespace std;void Hannuo(int n,char A,char B,char C){ if(n==1) { cout<<A<<"->"<<C<<endl; //剩下一个放入C } else { Hannuo(n-1,A,C,原创 2022-01-02 23:07:53 · 344 阅读 · 0 评论 -
分治算法-快速排序
题目是输入数量n,然后输入n个数,最后进行排序。核心思想是每次找中间值后在俩边进行重复操作。#include<iostream>using namespace std;int quickSearch(int a[],int left,int right){ int i = left, j=right,k=a[left]; //k初值定数组第一个数,k作为的是中间量 while(i<j){ while(i<j&&a[j]>k) j--; /原创 2022-01-02 22:42:18 · 813 阅读 · 0 评论 -
分治算法-归并排序
本题用到了递归思想,如看不懂可以先去看汉诺塔问题。题目是这样的输入数量n,然后输入n个数对其进行排序。#include<iostream>using namespace std;void Merge(int a[],int left,int mid,int right){ int *b = new int[right-left+1]; int i= left,j=mid+1,k=0; while(i<=mid && j<=right){ i原创 2022-01-02 22:12:24 · 627 阅读 · 0 评论 -
分治算法-二分查找
题目是这样的输入元素个数和元素值,随后输入一个查找数,查询是否存在。#include<iostream>#include<algorithm>using namespace std;int erfenSearch(int n,int a[],int aim){ int left=0,right=n-1; //左标和右标 while(left<=right){ int mid =(left+right)/2; if(a[原创 2021-12-29 22:52:33 · 620 阅读 · 0 评论 -
贪心算法-最短路径
这问题跟前面的不是一个难度的(hhh)dijkstra算法,需要一点数据结构的基础,暂时就先放代码,如果看的人多我就再补详细分析。题目是这样的,输入点的个数和路线数,之后输入点的连接和权重。然后输入源点(也就是现在所在的点),求到其余各点的最短路径。#include<iostream>const int N = 100;const int INF =1e7;using namespace std; int map[N][N],dist[N],n,m; //map[][.原创 2021-12-29 00:36:16 · 836 阅读 · 0 评论 -
贪心算法-会议安排问题
本题的题目是输入一系列会议的开始时间和结束时间输出能安排的最大会议数#include<iostream>#include<algorithm>using namespace std;struct Meet{ int start; //开始时间 int end; //结束时间}meet[10000];bool cmp(Meet a,Meet b){ if(a.end==b.end){ return a.start &...原创 2021-12-27 00:12:48 · 505 阅读 · 0 评论 -
贪心算法-最大背包问题
该问题的目标是求得背包最大价值,且物品可以被分成一部分放入背包。#include<iostream>#include<algorithm>using namespace std;struct goods{ double w; //物品重量 double v; //物品总价 double p; //物品单价}s[10000];bool cmp(goods a,goods b){ return a.p >b.p; //降序排列...原创 2021-12-26 22:15:00 · 573 阅读 · 0 评论 -
贪心算法-最优装载问题
=-=算法的经典例题,供大家参考。先简略更新,如果大家觉得不错我就详细分析一下这些问题。题目是输入物品数量和背包大小,然后输入各物品的重量,求所能存放的最大物品数。#include<iostream>#include<algorithm>using namespace std;int main(){ double w[1000]; //物品重量 double c; //背包总容量 int n; //物品个数 cin>>...原创 2021-12-26 21:14:16 · 551 阅读 · 0 评论