- 博客(26)
- 收藏
- 关注
原创 设计模式详解
类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
2024-08-12 21:36:45
417
原创 哈希表C++STL入门——持续更新
这样的哈希表每个键只能存放一个元素,我们还可以创建以vector作为值的哈希表,这样可以做到每个键对应多个值(刷题时遇到的,在题目场景下比较好用)常见的,比如声明一个键值都为int类型的哈希表。本文记录在刷题中遇到的哈希表相关内容。一开始没看懂,后来懂了…
2023-09-19 16:43:26
96
原创 采草药——01背包问题
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入格式第一行有两个整数 T(1≤T≤1000) 和 M(1≤M≤100),用一个空格隔开,T
2021-02-21 11:20:36
251
原创 Prime Ring Problem
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, …, n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.Note: the number of first circle should always be 1.Inputn (0 < n < 20
2021-01-19 19:01:36
163
原创 洛谷P2419 [USACO08JAN]Cow Contest S
P2419 [USACO08JAN]Cow Contest SFJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:)。在赛场上,奶牛们按1…N依次编号。每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就是说,奶牛们的编程能力有明确的排名。 整个比赛被分成了若干轮,每一轮是两头指定编号的奶牛的对决。如果编号为A的奶牛的编程能力强于编号为B的奶牛(1 <= A <= N; 1 <= B <= N; A != B) ,那么她们的对决中,编号
2020-10-19 21:31:54
425
1
原创 C++/C常用函数搜集
next_permutation(数组头地址,数组尾地址)生成以数组当前顺序全排列的下一个全排列。int main(){ int num = 1,a[6]= {1,2,3,4,5}; while(next_permutation(a,a+5)) { for(int i=0; i<5; i++) cout<<a[i]<<" "; if(num==5) break;
2020-10-05 21:20:47
109
原创 迷宫问题
下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共10 步。其中D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一
2020-09-20 19:36:02
425
原创 用数组模拟整数的阶乘
整数的阶乘一般非常大,例如24的阶乘long long 的数据类型也放不下,这时候我们应该用数组来模拟阶乘的过程,存储阶乘的结果。下面以求24的阶乘为例,给出具体的代码:#include<iostream>#include<cstdio>using namespace std;int a[110];//定义数组来存储阶乘结果int main(){ a[1]=1;//初始化 for(int i=1;i<=24;i++){ for(int j=1;j<
2020-09-20 19:12:01
229
原创 Python 在一行中输入多个数,用空格隔开
这里要使用一个函数input().split()如果使用eval(input())会报错下面给出一个例子a,b,c=input().split() #输入三个整数b=int(b) #进行强制类型转换c=int(c)a=int(a)ans=b*b-4*a*c #计算方程结果print(ans) #输出...
2020-09-12 11:27:24
19110
2
原创 动态规划#洛谷 P1002 过河卒
思路:一开始使用了搜索,结果分数较低。查看了部分题解后开始采用动态规划。状态转换方程如下代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define ull unsigned long longusing namespace std;const int fx[] = {0, -2, -1, 1, 2, 2, 1, -1, -2};c..
2020-08-11 23:10:06
118
原创 完全背包#洛谷 P1616 疯狂的采药
题目描述LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是 LiYuxiang,你能完成这个任务吗?此题和原题的不同点:每种草药可以无限制地疯狂采
2020-08-11 16:30:46
181
原创 记忆化搜索#洛谷 P1434 滑雪问题
题目Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当
2020-08-11 15:19:46
277
原创 操作系统#第二章进程的描述与控制#大纲
第二章 进程的描述与控制2.1前驱图和程序执行1.前驱图 (DAG图,有向无循环图)2.程序的顺序执行特征:顺序性、封闭性、可再现性。3.程序并发执行前提:不存在前驱关系。并发执行特征:间断性、失去封闭性、不可再现性。2.2 进程的描述1.进程的定义和特征进程的典型定义:进程是程序的一次执行。进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。官方定义:进程是进程实体的运行过程
2020-08-09 18:36:31
257
原创 贪心#洛谷P1223 排队接水问题
题目描述有 n 个人在一个水龙头前排队接水,假如每个人接水的时间为 Ti,请编程找出这 n 个人排队的一种顺序,使得 n 个人的平均等待时间最小。输入格式第一行为一个整数 n。第二行 n个整数,第 i 个整数 Ti 表示第 i个人的等待时间 Ti 。输出格式输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。输入输出样例输入1056 12 1 99 1000 234 33 55 99 812输出3 2 7 8 1
2020-06-23 14:42:30
1165
原创 用邻接矩阵实现Dijkstra算法
#include<iostream>#include<cstdio>using namespace std;const int MAX=9999999;const int MAXN=20;int dist[MAXN];//存储最短路径 bool s[MAXN];//存储已经找到最短路径的结点 int u[MAXN][MAXN];//存储邻接矩阵 int fr...
2020-04-13 22:20:01
854
原创 #动态规划#最长公共子序列问题
求两个字符串的最长公共子序列。给出动态规划方程:#include<iostream>#include<cstdio>using namespace std;const int maxn=100;//x[]存储第一个序列,y[]存储第二个序列,c[][]存储公共子序列的情况 //b[]记录c的值是由哪一个子问题的解得到的,用来构建最长公共子序列 void ...
2020-03-26 17:31:39
200
原创 动态规划入门#矩阵连乘问题
动态规划算法通常用来求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适用于用动态规划求解的问题,经分解得到的子问题往往不是互相独立的。若用分治法来求解这类问题,则分解得到的子问题数目太多,...
2020-03-24 21:04:18
279
原创 凶手
巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:A:我不是罪犯B:A、C中有一个是罪犯C:A和B说了假话D:C和F说了假话E:其他五个人中,只有A和D说了真话F:我是罪犯他们中只有一半说了真话,凶手只有一个。本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。请编程找出可能的凶手输出。(假设唯一的凶手是A或者D或者E,则...
2020-03-10 16:20:30
456
原创 Huffuman树练习
Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。重复步骤1,直到{pi}中只剩下一个数。在上面...
2020-03-10 13:16:29
149
原创 用筛法求到N的素数
根据算术基本定理:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积。用一个bool类型的数组prime[ i ]来标记 i 是否为素数。根据以上定理,如果prime[ i ]判定为素数,则prime[ i*j ]一定不为素数。代码如下:#include<iostream>#include<cstdio>using namespace...
2020-03-10 12:11:48
183
原创 快速幂算法#洛谷P1226 【模板】快速幂||取余运算
快速幂算法#洛谷P1226最近学习了分治算法的基本思想。所谓分治算法,就是将大问题分成若干个容易解决的子问题,子问题继续分,直到该问题可以一步求解。分治算法有四点特征: 1、问题缩小到一定的规模就可以容易地解决。 2、该问题可以分为若干个规模较小的相同问题,即该问题具有最优子结构。 3、利用该问题分解出来的子问题的解可以合并成原问题的解。 (如果不具有这条特征而具有前两条特征,...
2020-03-06 15:47:54
510
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人