
笔记
吾儿沛安
求求你AC吧,求求了!
展开
-
HDU1062——stack的应用
文章目录题目解法题目上链接解法//翻转字符串#include<iostream>#include<algorithm>#include<string>#include<stack>using namespace std;int main(){ int n; cin >>n; getchar(); while(n--){ stack<char>s; c原创 2021-05-11 19:44:38 · 105 阅读 · 0 评论 -
hdu4841——圆桌问题(Vector的使用)
文章目录题目思考题目圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。链接思考就是普通的圆桌问题,但是如果用静态数组来做的话,很难表现出把坏人踢出去这一操作,所以采用动态数组可以生动形象的踢人。注释我写的还是比较详细了~/*圆桌上围坐着2n个人。原创 2021-05-11 19:19:37 · 930 阅读 · 0 评论 -
C++ STL Vector常用操作集合
#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){ vector<int>a; for(int i=0;i<10;i++){ a.push_back(i);//在链栈的尾部插入一个元素 } a.pop_back();//删除尾部元素 a.erase(a.begin()+1);//删除单个元素原创 2021-05-10 19:20:18 · 146 阅读 · 0 评论 -
辗转相除法(采用递归)
int gcd(int a,int b){ if(a%b==0) return b; else return gcd(b,a%b);}这样写不用比较a和b的大小,也不用每次除完都对a和b重新赋值,太强了~作者是:元气算法链接:link转载 2021-05-06 20:20:41 · 887 阅读 · 0 评论 -
next_permutation && prev_permutation in C++
这个是C++里面用于生成全排列的函数很好用,不仅能对数组进行全排列,还能对字符串进行全排列,但是必须保证字符串内的数组是有序的。当然,我们也可以用sort对字符串内的字符进行排序#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){ string s; s="213"; sort(s.begin(),s.end()); do{ co原创 2021-04-26 19:44:52 · 78 阅读 · 0 评论 -
汉诺塔问题详解,一个问题,两种思考,酣畅淋漓!
背景汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。思想这里需要使用到分治的思想,从字面意思上来看,分治就是分而治之分把一个大问题不断的分成多个小问题(多数情况下分为两个子问题例如汉诺塔),再将这些小问题继续划分,直到出现一个最小子问题原创 2021-04-01 20:35:03 · 849 阅读 · 1 评论 -
图论学习笔记——链式前向星——永远滴神
文章目录图的存储邻接矩阵(方阵)邻接表前向星构造前向星前向星的PRO——PLUS——ULTRA:链式前向星图的存储邻接矩阵(方阵)比较简单,没啥可说的邻接表考虑三种可能把每个链表的表头放在一个链表中(链表+链表)把每个链表的表头放在一个数组中(数组+链表)作用:表示一张图中两顶点之间的关系,用1表示前向星假设有那么一张有向图,一种数据结构,以储存边的方式来存储图。构造方法如下:读入每条边的信息,将边存放在数组中,把数组中的边按照起点顺序排序(可以使用基数排序,如下面例程),前向星原创 2021-04-20 21:58:04 · 192 阅读 · 0 评论 -
洛谷P1379——双向BFS
单向BFS注意这里的stoi不是标准函数,有些OJ不认,慎用。而C++str字符串可以直接用==来判断是否相等woc,笔者脑子坏了,竟然用一维数组代替二维数组,也就是说(一下按照程序员计数法)加入此时0在第1行的第0个,那么0向左移动一位,就会跳到第0行的第2个,这时索引值是在正常范围内的,但是在真实世界中又是不可以的,这里千万注意。注意啊,这个是错误示范#include<iostream>#include<string>#include<cstring>原创 2021-04-19 22:29:49 · 375 阅读 · 0 评论 -
C++ atoi和stoi的区别
首先他们都包含在头文件<cstring>里面其共功能都是将字符/字符串转换成数字其中atoi针对的是字符数组,不能用于字符串而stoi可以直接针对字符串正确的写法错误的写法原创 2021-04-19 11:59:16 · 449 阅读 · 0 评论 -
素数筛法——水文但效果极佳
const int MAX=100000; int prim[MAX]; for(int i=2;i<MAX;i++){ prim[i]=i; } for(int i=2;i<MAX;i++){//素数筛法,这种方法非常快 for(int j=i+i;j<MAX;j+=i){ prim[j]=0; } }这玩意儿也不能说原创吧,好像第一作者是费马?不是很确定,反正是前辈留下.原创 2021-04-18 16:10:25 · 67 阅读 · 0 评论 -
输出set内部有序元素
要用到迭代器,笔者还没学,参考大佬的链接笔者的代码#include<iostream>#include<set>using namespace std;int main(){ set<int>s; s.insert(5); s.insert(4); s.insert(2); s.insert(3); s.insert(1); for(set<int>::iterator it=s.begin();it!=s.end();it++){原创 2021-04-18 13:19:01 · 334 阅读 · 0 评论 -
位和进制的关系
一个int 类型占32位也就是说需要用32位二进制数来表示这个数字那么现在两个字节长度为16位的补码下面的位的意思是二进制位4位二进制位能表示一个16进制数1位二进制位能表示一个2进制数现有如下题目(单选)17、两个字长16位的补码0A2B和E16A, 带符号扩展成32位后的结果分别CA.00000A2B和0000E16AB.FFFF0A2B和0000E16AC.00000A2B和FFFFE16AD.11110A2B和FFFFE16A先看题目字长(字节长度的缩写)为16位那么说明原创 2021-04-15 15:42:27 · 2292 阅读 · 0 评论 -
背包三讲(感谢崔添翼 (Tianyi Cui)大佬的无私奉献)
背包问题目录01背包问题完全背包问题多重背包好了,那么讲解到此结束~01背包问题最经典的动态规划问题,没有之一题目描述你有一个容量为V的背包,你面前有N件物品,第i件物品的价值为 Wi,所占用的容量为Vi,请问怎么取物品能在背包装不下之前取得最大价值?(注意这里的量词,用的是“件”)解题思路动态规划的题目我们要尝试找到一个最优子结构,在这里我们不难发现,假设当前背包容量为Va(Va<Vmax),价值为Wa,那么我想要接着装入下一个物体的时候,我需要献给背包腾出这么大的空间,然后再把这个物体原创 2021-04-15 00:45:24 · 369 阅读 · 0 评论