随笔分类 - C++学习笔记
摘要:0-1背包问题理解 问题内容:有i种类型的物品,它们的重量和价值分别是weight[i]和value[i],每种物品数量只有一个。现在,有一个容量为j的背包,如何装取物品,使得背包价值最大? 解题思路:典型的动态规划问题。 1.确定dp数组含义:dp【i】【j】任取【0~i】的物品放进背包的容量为j
阅读全文
摘要:Leetcode之 重叠区间 (最少数量箭引爆气球) 1.重叠区间:一组二维数组,它的0列是开始,1列是结束。最少要删除多少个子数组,各子区间才不重叠 方法一:直接记录交叉区间个数 static bool cmp(vector<int>& a, vector<int>& b) { return a[
阅读全文
摘要:LeetCode 之135.分发糖果问题 N个数为一排,每个位置至少加1,相邻两个数评分更高的会得到更多的数,计算所有位置数之和最小。 解题思路: 相邻A与B,A在B左边,若A<B,则B位置加1;若A>B,则A位置加1。 class Solution { public: int candy(ve
阅读全文
摘要:回溯算法之组合总和问题 求解在一个数组中,找出所有满足数字和为目标数的组合 1.同一个数组,组合可存在重复数字,组合也能重复 class Solution { public: vector<vector<int>> result; vector<int> path; void backtrackin
阅读全文
摘要:回溯算法 一、理论基础 1.回溯算法主要用于解决以下问题:组合、排列、切割、子集、排列、棋盘。 2.回溯算法分析模板如下: void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小))
阅读全文
摘要:二叉树 一、二叉树理论基础 1.满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。通俗话理解:从底层开始到顶部的所有节点都全部填满的二叉树。深度为k,则有2^k-1个节点 2.完全二叉树:除了最底层节点没有节满,其余每层节点都达到最大值,并且
阅读全文
摘要:链表 一、理论基础 1.链表是一种由指针串联起来的线性结构,包括数据域和指针域,可分为单链表、双链表和循环链表 2.循环链表可以用来解决约瑟夫环问题,链表的头为head 3.存储方式:它是由指针域链接起来的,在内存中不是连续分布的 4.链表的定义: //单链表 struct listnode{ in
阅读全文
摘要:一、程序内存模型 根据运行前与运行后,一共分为四大区域: 1.程序运行前:代码区、全局区; 2.程序运行后:栈区、堆区; 二、代码区 程序运行前写的所有代码,最后全部转换成二进制录入电脑 三、全局区 包括: 全局变量:写在函数体之外的变量; 静态变量:在普通变量前加关键字static; 常量:字符串
阅读全文
摘要:一、运用所学的结构体、地址指针等基础知识,完成通讯录管理系统 二、系统主要有以下6个功能: 1.添加联系人2.显示联系人 3.删除联系人 4.查找联系人5.修改联系人 6.清空联系人 1 #include<iostream> 2 using namespace std; 3 #include<str
阅读全文
摘要:#include <iostream> using namespace std; //冒泡排序 //比较相邻元素,如果第一个大于第二个,两者交换位置,最后找出最大值 //最终效果即升序 int main() { //利用冒泡排序实现升序序列 int arr[] = { 4,2,3,0,5,1,9,6
阅读全文
摘要:1.嵌套循环案例——九九乘法表 int main() { //利用嵌套循环乘法口诀表 for (int n = 1; n <= 9; n++) { for (int m = 1; m <= n ; m++) { cout << m << "*" << n << "=" << m * n<<" ";
阅读全文
摘要:学习循环结构小案例 #include<iostream> using namespace std; //水仙花数 //水仙花数是指一个3位数,它的每一位上的数字的三次幂之和等于它本身 int main() { int num = 100; int a = 0; int b = 0; int c =
阅读全文
摘要:C++ 学习循环结构小案例 #include<iostream> using namespace std; #include<ctime> //随机猜数字1~100 int main() { //添加随机数种子:利用当前系统时间生成随机数,防止每次随机数都一样 srand((unsigned int
阅读全文
摘要:C++选择结构学习小案例 #include<iostream> using namespace std; int main() { int A = 0; cout << "请输入小猪A体重" << endl; cin >> A; int B = 0; cout << "请输入小猪B体重" << en
阅读全文
摘要:1.前置与后置区别 #include<iostream> using namespace std; int main() { //前置和后置区别 //前置递增或递减 先让变量加减1 然后进行表达式运算 int a1 = 10; int b1 = ++a1 * 10; cout << "a1=" <<
阅读全文
摘要:1.每次新建项都可需写内容 #include <iostream> using namespace std; int main() //main函数有且只有一个 { system("pause"); return 0; } 2.变量创建 //变量创建: 数据类型 变量名=变量初始值 int a =
阅读全文
摘要:转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表
阅读全文