
C++
文章平均质量分 66
ROYAL-Cherry
这个作者很懒,什么都没留下…
展开
-
找零钱问题
322. 零钱兑换518. 零钱兑换 II//dpint coinChange_dp(vector<int>& coins,int amount){ int n = coins.size(); //dp[i][j] : coins[0..i]元素替换成j的方法种数 vector<vector<int>> dp(n,vector<int> (amount+1)); //初始值:只用coins[0]替换 dp[0][j原创 2021-08-11 18:26:46 · 157 阅读 · 0 评论 -
约瑟夫问题
int main(){ int n,m; cin>>n>>m; vector<bool> in(n+1,true); int last = 0; // 一次out一个 for(int i=1;i<=n;++i){ int cnt = 0; // 每次都必须报够m个数 while(cnt<m){ last++; if(l原创 2021-01-23 22:45:55 · 151 阅读 · 0 评论 -
奇偶校验(转换二进制、bitset)
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如’3’,输出:10110011)。https://blog.youkuaiyun.com/meng_lemon/article/details/89060740七位二进制可表示所有字符的十进制ASCII码(0~127)。int main() { string s; vector<int> res(8); //7位二进制数表示字符的ASCII码,最高位为奇偶校验位 while (cin >> s)原创 2020-10-08 14:24:52 · 1518 阅读 · 1 评论 -
由数组创建完全二叉树和二叉树的遍历
一、前序遍历//递归前序遍历void preorder(node*& root) { if (root == NULL) { return; } cout << root->val << ' '; //访问根节点 preorder(root->left); preorder(root->right);}//非递归前序遍历//借助栈,先压入根节点,每访问一个节点时出栈,然后先压右子树,再压左子原创 2020-10-07 22:51:11 · 537 阅读 · 0 评论 -
vector数组中size函数的返回值问题
刷题时遇到下面的问题,此段代码会死循环! 问题在于size()函数的返回值!vector<int> nums{ 2,1 };for (int i = nums.size()-1; i >= nums.size()-2; i--) { //int res = nums[0]; //cout << res <<' '<< nums.size()<< endl; }std::vector::siz原创 2020-10-03 22:49:34 · 2484 阅读 · 0 评论 -
C++二维数组排序(sort)、sort中调用comp的一些注意
bool cmp(vector<int>& a, vector<int>& b) { return a[2] < b[2];}int main(){ vector<vector<int> > v = { {4,9,6},{1,2,3},{7,1,9},{10,0,6} }; //sort(v.begin(), v.end());//默认按每行第一个元素排序 sort(v.begin(), v.end(),cmp); for原创 2020-10-02 14:14:41 · 2218 阅读 · 0 评论 -
基于顺序结构和单链表的各种排序算法C++实现
1.直接插入排序时间复杂度O(n^2) 空间复杂度O(1)稳定:不会改变相等元素的相对位置。适用于顺序存储和链式存储。算法描述: L[1…n]初始L[1]是一个已经排好序的子序列;将L(i)(L[2…n])插入到已排好序的子序列 :(1)查找出L(i)在L[1…i-1]中的位置k;(2)将L[k…i-1]中的所有元素后移一位;(3)将L(i)复制到L(k)基于顺序存储的直接插入排序://直接插入排序(顺序存储)void straisort(vector<int>&原创 2020-09-26 10:20:59 · 1713 阅读 · 0 评论 -
最短路径C++( 广度优先搜索、Dijkstra算法和Floyd算法)
一. 单源最短路径(single - source shortest path)基于图的邻接矩阵存储。单源最短路径是指从一个顶点到其它各顶点之间的最短路径(single - source shortest path)。迪杰斯特拉(E.W.Dijkstra)于1959年提出了一个寻找单源最短路径的方法。其基本思想是,设置一个顶点集合S,并不断地作贪心选择来扩充这个集合。该算法属于算法设计方法中的贪心算法(greedy selector)类——总是作出当前看来最好的选择,通过获取局部最优,最终达到获取原创 2020-09-12 11:24:03 · 4449 阅读 · 0 评论 -
图的拓扑排序及关键路径C++实现(基于邻接表)
AOV网:顶点表示活动,弧表示活动间的优先关系的有向图。无有向环。AOE网:顶点表示事件,弧表示活动,权表示活动持续的时间的有向无环图。1.拓扑排序(AOV网)const int MAX_VERTEX_NUM = 20;//图的邻接表存储:对图的每个顶点建立一个单链表。需要两种类型的节点。一种是表头节点(数量=图的顶点数),以向量形式存储,以便随机访问任一顶点的链表;//一种是与表头节点表示的顶点邻接的顶点,链接到相应表头节点后面//与表头节点表示的顶点邻接的顶点的节点,包括一个顶点的数据域ad原创 2020-09-10 21:33:34 · 1277 阅读 · 0 评论 -
图的构造与表示(邻接表)及遍历(深搜和广搜及其应用)
struct GraphNode { int label; vector<GraphNode*> neighbors; GraphNode(int x) : label(x) {};};void DFS_Graph(GraphNode* node, int visit[]) { //数组作参数传给函数时,传的是指针 visit[node->label] = 1; printf("%d", node->label); for (int i = 0; i < n..原创 2020-09-10 11:45:44 · 799 阅读 · 1 评论 -
最小生成树之PRIM算法&Kruskal算法C++代码(详细注释)及复杂度分析
最小生成树之PRIM算法C++代码实现:#include <iostream>#include <vector>using namespace std;void prim(vector<vector<int>>& VGraph, vector<int>& lowcost, vector<int>& closest, vector<bool>& visited) { int si原创 2020-09-07 16:37:10 · 2656 阅读 · 0 评论 -
C++结构体指针做函数参数不会改变实参的值
参考 https://blog.youkuaiyun.com/c991262331/article/details/83274525在做一道经典的深度优先搜索二叉树的题目时遇到一个问题,即C++中将结构体指针作为参数传递时,并不会改变实参的值!原因是当结构体指针传递给函数时,会拷贝一份指针的值,但是函数内部的指针和函数外部的指针并不是指向同一个引用的,所以才会使得函数里面改变了,但是函数外部无变化,解决方案是在传参的时候,将结构体指针的引用传递过去。class Solution {public://算法:/原创 2020-09-01 16:21:26 · 1830 阅读 · 5 评论