算法
Datura_Metel
这个作者很懒,什么都没留下…
展开
-
航道交叉问题
问题概述:某国家被一条河划分为南北两部分,在南岸和北岸各有N个渡口,现有N条航线,每条航线的一端是南岸的一个渡口,另一端是北岸的一个渡口,每个渡口只能为为某一条航线使用,每条航线有自己的载货量。由于河终年有雾。政府需要选择其中部分航线允许开通的航线且航线之间互不交叉(如果两条航线交叉,将有很大机会撞船)。选择哪些航线可以使得载货量最大。struct line{ int port1; int port2; int weight;};bool isCross(const line &.原创 2021-06-30 08:55:09 · 482 阅读 · 0 评论 -
ACM-ICPC世界总决赛试题解析-2006年压缩二进制消息Bit Compressor
#include <cstdio>char a[44];int cases = 1, inf = 99999, n, m, len;int total, ones, solutions;void go(int i){ if (total > n || ones > m || solutions > 1)return; if (i >= len) { if (total + ones == n + m)++solutions; return; .原创 2020-09-12 14:53:57 · 188 阅读 · 0 评论 -
利用栈实现算式的计算
#include <iostream>using namespace std;#define MaxSize 100typedef struct{ char data[MaxSize]; int top;}SqStack;struct priority{ char ch; int pri;};struct priority lpri[] = { { '=',0 ...原创 2018-04-09 14:00:35 · 685 阅读 · 0 评论 -
设置排序规则对自定义的结构体进行
typedef struct{ int tall; char name[15];}student;bool cmp(student A, student B){ if (strcmp(A.name, B.name) > 0) return true; if (!strcmp(A.name, B.name) && A.tall > B.tall)...原创 2020-07-01 14:13:08 · 152 阅读 · 0 评论 -
排序与按索引输出
#include <iostream>#include <algorithm>using namespace std;int num[1200];int main(){ int n, m; char str[10]; scanf_s("%d", &n); for (int i = 1; i <= n; ++i) scan...原创 2020-07-01 14:05:07 · 143 阅读 · 0 评论 -
最大长方体问题
问题描述: 一个长、宽、高分别为m,n,p的长方体被分割成m*n*p个小立方体。每个小立方体内有一个整数,设汁一个算法,计算出所给长方体的最大子长方体。子长方体的大小由它所含的所有整数之和确定。代码展示:#include "iostream"using namespace std;const int maxn=20;//定义常量指定数组的大小/*动态规划:d[0]=c...原创 2017-05-01 15:15:12 · 3867 阅读 · 0 评论 -
租用游艇问题
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,3,……,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j)1<=i<j<=n。 对于给定的游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i<j<=n,编程计算从游艇出租站1到游艇出租站n所需的最少租金。输...原创 2017-05-02 21:30:26 · 819 阅读 · 0 评论 -
未排列的n个数组元素的最大间距
#include <iostream>using namespace std;template<class T>int maxi(int n, T a[]){ int k = 1; for(int i=2; i <=n; i++) { if(a[i]>a[k]) { k = i; ...原创 2018-04-15 18:24:34 · 220 阅读 · 0 评论 -
8位的格雷码的分治实现法
#include <iostream>using namespace std;unsigned int a[1024];void gray(int n){ if(n==1) { a[1] = 0; a[2] = 1; } else { gray(n-1); unsigned int k=1<&l...原创 2018-04-15 18:26:11 · 921 阅读 · 0 评论 -
数列转换(15)
#include <iostream>#include <algorithm>using namespace std;void quicksort(int* a, int p, int r){ if (p < r) { int x = a[p + (rand() % (r - p + 1))]; int i = p - 1, j...原创 2018-05-03 16:26:58 · 243 阅读 · 0 评论 -
三臂起重机(101)
#include <iostream>#include <algorithm>using namespace std;const int maxn = 100;int main(){ int n, p, q; cin >> n >> p >> q; if (n < maxn) { if (p &...原创 2018-05-03 21:39:02 · 195 阅读 · 0 评论 -
放水(8)
#include <iostream>#include <algorithm>using namespace std;const int numLimit = 111;struct st_floor{ int w, l, p;};struct st_sub{ int A, num;};struct st_floor floor_info[numLimit];st...原创 2018-05-04 14:08:08 · 182 阅读 · 0 评论 -
线性表维护(67)
#include <iostream>#include <string>using namespace std;struct st_node{ string k; struct st_node * next;};typedef struct st_node ptype;typedef ptype* node;node root, last, p, back, b...原创 2018-05-16 20:47:18 · 189 阅读 · 0 评论 -
平面分割问题(82)
#include <iostream>#include <algorithm>using namespace std;int main(){ int a[100] = { 0,2 }, n; cin >> n; for (int i = 2; i <= n; ++i) a[i] = a[i - 1] + 2 * (i - 1...原创 2018-05-23 15:37:21 · 695 阅读 · 0 评论 -
Catalan数
问题:一个凸 n 边形中,通过不相交的对角线将 n 边形分割成若干三角形,不同的拆分数目用 h[n] 表示, 五边形有5种拆分法,因此h[5] = 5; 分析:凸 n 边形的任意一条边都必然是一个三角形的一条边,因为不在同一直线上的三点确定一个三角形,可以在p[2]、p[3]、……、p[n-1]中找出一点与p[1]、p[n]构成一个三角形,就将凸 n 边形分割成三个区域,如下图所示。其中区域2是...原创 2018-05-23 17:08:09 · 1206 阅读 · 0 评论