- 博客(44)
- 收藏
- 关注
原创 回溯法——图着色问题
对V个顶点,E条边的图,用n种颜色进行涂色,要求共边的两点颜色不相同,一共有多少种涂法?#include<iostream>#include<cstring>//对V个顶点,E条边的图,用小于n种颜色进行涂色,要求共边的两点颜色不相同,一共有多少种涂法 using namespace std;int G[111][111]; int color[111];int V, E, n, count = 0;bool Judge_Color(int t, int i.
2022-05-27 22:14:04
2137
原创 动态规划——最长公共子序列(LCS),最长上升子序列,数字三角形
LCS:任务描述给定两个序列a,b,求a和b的最长公共子序列相关知识动态规划输入格式两行,每行为一个长度不超过500的字符串(全为大写字符串)输出格式输出一个数,最长公共子序列的长度,若不存在公共子序列,则输出0。输入ABCBDABBDCABA输出4#include<stdio.h>#include<string.h>#include<math.h>int n,m;char a[1010],b[1010];
2022-05-27 10:35:30
133
原创 贪心算法——找零钱问题
假设有数目不限的面值为20,10,5,1的硬币。给出需要找零数,求出找零方案,要求:使用数目最少的硬币。对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值。比如,需要找钱数为25时,找钱方式为20+5,而不是10+10+5。/** m[ ]:存放可供找零的面值,降序排列 * k:可供找零的面值种类数 ,即m[ ]的长度* n:需要找零数 */#include<stdio.h>void getmoney(int m[...
2022-05-20 09:28:39
7679
原创 贪心算法——最优装载问题
任务描述有一天,海盗截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一但打碎就失去了价值,虽然海盗船足够大,但载重量为C,每件古董的重量为Wi,海盗们如何把尽量多的宝贝装上海盗船呢?输入格式第一行输入n,c,代表有n个古董和船的重量第二行输入n个数,代表每个古董的重量。1<n,c<100000每个古董的重量不超过100输出格式输出一个数,代表最多装多少个古董输入样例8 304 10 7 11 3 5 14 2输出样例5#include&l
2022-05-19 23:14:10
1065
原创 贪心算法——活动安排、会场安排
第一题——活动安排:任务描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入格式第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)
2022-05-19 23:11:50
1094
原创 01背包和完全背包(dp法)、部分背包(贪心法)
01背包任务描述给定n个物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?相关知识动态规划输入格式第一行输入一个n,c,代表有n个物品背包容量为c接下来n行,每行输入wi,和vi其中0<n,c,wi,vi<5000输出格式输出一个数,代表最大价值。输入4 82 33 44 55 6输出10//01背包问题 #include<stdio.h>
2022-05-18 21:43:25
265
原创 回溯法——TSP问题(解空间:排列树)
输入格式第一行输入n,代表有n个城市。接下来n行每行输入n个数,第i行j列的值代表i市到j市的距离,0代表城市之间不通注意:起点和终点都为1n<7,城市之间的距离都不超过100输出格式第一行输出最少的旅行费用第二行输入旅行路径(保证只有一条最短旅行路径)Sample Input4 0 30 6 430 0 5 106 5 0 204 10 20 0Sample Output251 3 2 4 1//#include<bits...
2022-05-18 14:02:33
2177
原创 回溯法——子集和问题(解空间:子集树)
任务描述设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法输入格式输入数据第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值接下来的1行中,有n个正整数,表示集合S中的元素n<10,c<100输出格式输出所有满足条件的集合,当问题无解时,输出“No Solution!”。注意:末尾不输出多余空格按照输入顺序输出,比如第一个满足条件的子集合是[2..
2022-05-18 13:59:20
1783
原创 删除数组(或字符串)中某个元素,保持原序列顺序不变
关键点: “覆盖”思想假设下标从0开始。每次只删一个元素。1.各种情况及思路情况1:删除尾元素(最简单)思路:其他元素不变,去掉最后一个元素实现:只需将数组长度减一,系统自动忽略最后一个元素情况2:删除首元素思路:所有元素均向前移1位;实现:用后一个元素的值覆盖前一个元素的值。a[i]=a[i+1]//删除首元素 for(int i=0;i<len-1;i++) { a[i]=a[i+1]; } len=len-1;注意:每次删除完一
2022-05-14 16:27:19
4017
1
原创 贪心算法——删数问题及vector相关应用
任务描述有一个长度为n(n <= 240)的正整数,从中取出s(s < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。输入格式第一行输入n和s输出格式输出一个整数输入样例178543 4输出样例13得到局部最优解的过程:实现代码://#include<vector>#include<bits/stdc++.h>using namespace std;int main().
2022-05-14 12:06:32
1144
原创 时间复杂度(半期考试错题)
出处:int func(int n){ int i = 0,sum = 0; while(s < n) s += ++i; return i; } - 世界を変える御宅族 - 博客园 (cnblogs.com)
2022-04-22 08:59:18
209
原创 数据结构版快速排序
//繁琐版快速排序#include <iostream>#define MAXSIZE 1000using namespace std;typedef struct{ int key; char *otherinfo;}ElemType; typedef struct{ ElemType *r; int length;}SqList;int Partition(SqList &L,int low,...
2022-04-22 08:53:47
948
原创 算法分析与设计
实验一 算法概述数字统计问题 字典序问题 兔子问题实验二 递归与分治策略及其应用整数划分 有重复元素的排列问题 棋盘覆盖问题实验三 动态规划实验矩阵连乘问题 最大子段和问题 0-1背包 最长单调子序列 最长公共子序列(LCS)实验一 算法概述数字统计问题任务描述本关任务:一本书的页码从自然数1开始编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0.例如,第8页用数字8表示,而不是08或者008之类。数字统计问题要求对给定书
2022-04-19 11:09:48
1186
1
原创 0-1背包(动态规划法、回溯法)
任务描述给定n个物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?相关知识动态规划输入格式第一行输入一个n,c,代表有n个物品背包容量为c接下来n行,每行输入wi,和vi其中0<n,c,wi,vi<5000输出格式输出一个数,代表最大价值。输入4 82 33 44 55 6输出10搞清楚状态转移方程是重点!装第i个物品时:①当装不下第i个物品时,dp
2022-04-18 17:08:19
685
原创 最大子段和
任务描述对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。相关知识动态规划输入格式第一行输入一个n,代表有n个数下面一行输入n个数,代表序列0<n<100序列中的数的范围为[-2000,2000]输出格式输出一个数,代表最大字段和。输入6 -2 11 -4 13 -5 -2输出20方法一:#include<stdio.
2022-04-18 16:53:50
77
原创 跑步锻炼1
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝每天都锻炼身体。正常情况下,小蓝每天跑11千米。如果某天是周一或者月初(11日),为了激励自己,小蓝要跑22千米。如果同时是周一或月初,小蓝也是跑22千米。小蓝跑步已经坚持了很长时间,从20002000年11月11日周六(含)到20202020年1010月11日周四(含)。请问这段时间小蓝总共跑步多少千米?#include <iostream>usin...
2022-04-08 22:45:22
56
原创 连通块问题——全球变暖(蓝桥杯真题)
题目描述你有一张某海域NxNNxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:........##.....##........##...####....###........其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成..
2022-04-08 22:21:47
374
原创 蓝桥杯真题——卡片
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝有很多数字卡片,每张卡片上都是数字00到99。 小蓝准备用这些卡片来拼一些数,他想从11开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从11拼到多少。 例如,当小蓝有3030张卡片,其中00到99各33张,则小蓝可以拼出11到1010, 但是拼1111时卡片11已经只有一张了,不够拼出1111。 现在小蓝手里有00到99的卡片...
2022-04-08 22:19:40
1816
原创 n皇后问题
题目描述在 N\times NN×N 的方格棋盘放置了 NN 个皇后,使得它们不相互攻击(即任意 22 个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 4545 角的斜线上。你的任务是,对于给定的 NN,求出有多少种合法的放置方法。输入描述输入中有一个正整数 N≤10N≤10,表示棋盘和皇后的数量输出描述为一个正整数,表示对应输入行的皇后的不同放置数量。输入输出样例示例 1输入5输出10#include <iostre.
2022-04-08 22:17:38
209
原创 删除数组重复项
输入长度为n的一个数组,输出排序后无重复项的新数组#include<bits/stdc++.h>using namespace std;const int N=10;int a[N];int n;int main(){ int s=0; cin>>n; for(int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); vector<int> A; for(int i=0;i<
2022-04-08 22:15:52
56
原创 dsf 实现各种排序
dfs入门级(模板)dfs基本模型void dfs(int step){ 判断边界 尝试每一种可能for(int i=1;i<=n;i++) { 继续下一步 dfs(step+1) } 返回}dfs模板(全排列)#include<bits/stdc++.h>using namespace std;const int N=10;int n;int path[N]; //记录所有的搜索路径 bool
2022-04-07 17:01:36
165
原创 基础算法2
高精度1.大数相加(需要知道vector 和 auto 的用法)#include<bits/stdc++.h>//#include<vector>using namespace std;vector<int> add(vector<int> &A,vector<int> &B) //不加&会copy整个数组 { vector<int> C; //if(A.size()<B.s
2022-04-06 22:59:47
46
原创 2022 蓝桥杯模拟赛
1.问题描述 以下是一个 25 行 25 列的字母矩阵,全部由字母 A 和 B 组成。 AAAAAAABABBAABABABAAAAAAA ABBBBBABBAABBBBBABABBBBBA ABAAABABBBABAABBBBABAAABA ABAAABABBBBBAABAABABAAABA ABAAABABBABABBABABABAAABA ABBBBBABBBABAABBBBABBBBBA AAAAAAABABABABABABAAAAAAA BBBBBBBBABA
2022-04-06 20:33:14
1008
原创 算法——螺旋矩阵
题目描述一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1,2,3,…,n21,2,3,…,n2,便构成了一个螺旋矩阵。下图是一个n=4时的螺旋矩阵。现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。输入格式输入共一行,包含三个整数 n,i,j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在
2022-04-05 22:08:13
4260
原创 基础算法1
1.快速排序#include<iostream>using namespace std;const int N=1e6+10;int n;int a[N];void qs(int a[],int l,int r) //{ if(l>=r) return; int x=a[l],i=l-1,j=r+1; //i,j需要各自先往两边偏移1 while(i<j) { do(i++) ;while(a[i]<x); do(j--)
2022-04-05 21:43:57
397
1
原创 蓝桥杯练习——3/27
1.跑步锻炼小蓝每天都锻炼身体。正常情况下,小蓝每天跑11千米。如果某天是周一或者月初(11日),为了激励自己,小蓝要跑22千米。如果同时是周一或月初,小蓝也是跑22千米。小蓝跑步已经坚持了很长时间,从20002000年11月11日周六(含)到20202020年1010月11日周四(含)。请问这段时间小蓝总共跑步多少千米?运行限制最大运行时间:1s 最大运行内存: 128M#include <iostream>using name...
2022-03-27 11:57:25
229
原创 数据结构——图的邻接表
#include <stdio.h> #include <iostream> #include <iomanip> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -1 typedef int Status; #define MVNum 20 //最大顶点数typedef char VertexType; //顶点类型 .
2021-12-24 12:40:19
1216
原创 数据结构——图的邻接矩阵基本操作
#include <stdio.h> #include <iostream> #include <iomanip> //setw(int n)函数的头文件 using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -1 typedef int Status; #define MAXQSIZE 100 #define ...
2021-12-24 12:38:42
1025
原创 数据结构————二叉树的基本应用
#include <stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include <iostream> using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef char TElemType;t...
2021-12-24 12:36:30
343
原创 数据结构——顺序查找、二分查找,冒泡排序,堆排序
#include <stdio.h>#include <stdlib.h> #include <time.h>#include <iostream> #include <iomanip>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status; typedef int KeyType; //关键字类型为int ty.
2021-12-24 12:35:24
727
原创 数据结构———二叉排序树的基本操作(遍历,插入,查找)
#include <stdio.h> #include <iostream> using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef int KeyType;//关键字类型为int typedef struct{ KeyType key; //关键字域 //InfoType otherinfo ;其他域按需定义 }TElemT.
2021-12-24 12:32:23
853
原创 万能头文件C++
模板/万能头文件/C++#include<bits/stdc++.h>using namespace std;int main(){return 0;}
2021-11-15 00:18:05
348
原创 数据结构——循环队列
#include <stdio.h>#include<stdlib.h>#include <iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status; typedef int QElemType;//队列的顺序存储结构#define MAXQSIZE 100typedef struct { QElemTy...
2021-10-28 11:11:43
398
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人