
分治算法题
勤奋的懒羊羊o
东北林业大学 计算机科学与技术本科毕业
现东南大学网安硕士在读 欢迎交流
展开
-
集合最大元问题(分治+递归)
问题描述: 在规模为n的数据元素集合中找出最大元。当n=2时,一次比较就可以找出两个数据元素的最大元和最小元。当n>2时,可以把n个数据元素分为大致相等的两半,一半有n/2个数据元素,而另一半有n/2个数据元素。 先分别找出各自组中的最大元,然后将两个最大元进行比较,就可得n个元素的最大元 代码如下: #include <iostream> using namespace std; int Maxsum(int left,int right,int a[]) { if(left==原创 2021-03-30 21:17:26 · 600 阅读 · 0 评论 -
归并排序(合并排序)(分治)
代码一:非递归 #include <iostream> #include <cstdlib> using namespace std; void Merge(int c[],int d[],int l,int m,int r)//合并c[l:m]和c[m+1:r]到的d[l:r] { int i=l,j=m+1,k=i;//分别用i和j标记两个数组起始位置,作标记位 while((i<=m)&&(j<=r))//当两个数组都没有到达终点时原创 2021-03-15 18:50:23 · 163 阅读 · 0 评论 -
棋盘覆盖(分治法+递归)
题意及思路如下图: 代码如下: #include <iostream> #include <cstdlib> #include <string.h> using namespace std; int tile=1; int Board[100][100]; /* * tr : 棋盘左上角顶点的行号,tc棋盘左上角顶点的列号 * dr : 特殊方格左上角顶点的行号,dc特殊方格左上角顶点的列号 * size :size = 2^k 棋盘规格为2^k*2^k */原创 2021-03-22 17:00:54 · 174 阅读 · 0 评论