算法
12十二12
12
展开
-
动态规划-矩阵连乘
#define CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;int n;int p[101];int m[101][101];int s[101][101];void MatrixChain() { for (int i = 0; i <= n; i++) { cin >> p[i]; } for (int i = 1; i <= n; i++) { m[i][i原创 2021-04-17 10:55:23 · 111 阅读 · 0 评论 -
分治算法-归并排序
分治就是把问题分解成独立的小问题,当问题足够小的时候,我们就可以简单的进行求解。void mergeSort(int left, int right, int array[]) { if (left >= right) // 当问题足够小的时候跳出递归。 { return; } else { int mid = left + right; // 从数组中间激昂其分开成小问题。 mid = mid / 2; mergeSort(left, mid, array); // 递归原创 2021-03-27 19:30:16 · 164 阅读 · 1 评论 -
分治算法-快速排序
快速排序:大部分人最喜欢用的一种排序算法。void Quick_Sort(int arr[], int begin, int end){ if(begin > end) // 跳出递归的条件。 return; int tmp = arr[begin]; // 基准tmp。 int i = begin; int j = end; while(i != j){ // 两个哨兵相遇结束循环。 while(arr[j] >= tm原创 2021-03-27 19:45:17 · 111 阅读 · 0 评论 -
分治算法-棋盘覆盖问题
在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。#include<iostream>#include<string.h>#include<string>#include<stdio.h>#define CRT_SECURE_NO_WARNINGSusing name原创 2021-03-30 20:36:18 · 626 阅读 · 0 评论 -
动态规划-数字三角问题
问题描述:给定一个由n行数字组成的数字三角形,如下图所示 7 3 8 8 1 0 2 7 4 44 5 2 6 5试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。如上图最大值为30=7+3+8+7+5。要求不只输出最后的结果,还要输出经过的数字,用加法的形式来表示。//输入573 88 1 02 7 4 44 5 2 6 5//输出7+3+8+7+530原创 2021-03-31 18:32:32 · 699 阅读 · 0 评论 -
算法设计与分析-nefu瑞格递归与分治算法设计
递归与分治6104610361026104#include<iostream>#include<string.h>#include<string>#include<stdio.h>#define CRT_SECURE_NO_WARNINGSusing namespace std;int number[101];int findMax(int left, int right);int main() { int n; cin >原创 2021-04-03 13:07:28 · 236 阅读 · 0 评论 -
算法设计与分析-nefu瑞格动态规划算法设计
动态规划610761066107#include<iostream>#include<string.h>#include<string>#include<stdio.h>#define CRT_SECURE_NO_WARNINGSint dp[101][101];int path[101][101];using namespace std;void LCSFindLongest(char X[], char Y[], int m, int原创 2021-04-03 13:11:24 · 317 阅读 · 0 评论 -
算法设计与分析-nefu瑞格贪心算法设计
贪心算法6122612161206122#include<iostream>#include<string.h>#include<string>#include<stdio.h>#define CRT_SECURE_NO_WARNINGSusing namespace std;int main() { int n; int k; int km[101]; memset(km, 0, sizeof(km)); cin >原创 2021-04-03 16:55:30 · 486 阅读 · 0 评论 -
分治算法-循环赛日程表
题目要求:有n = 2k的运动员参加比赛。1.每个选手必须与其他n-1个选手进行一场比赛2.每个选手每天只能进行一场比赛。3.循环赛一共只进行n-1天4.我们可以用一张表来表示我们的比赛顺序:第i行第j列表示第i名运动员将会咋第j天遇到的对手。按照分治策略,我们应该将这些人分成更小的问题来求解。void Table(int k, int **a) { // 有2的k次方的运动员。 int n = 1; // 用来计算出运动员的人数。 for (int i = 1; i <= k; i原创 2021-03-27 20:09:30 · 274 阅读 · 0 评论