- 博客(32)
- 收藏
- 关注
原创 c语言数据类型和储存模型以及内存模型
TC是按ANSI标准的,它的int是占2个字节的。float,double也是一样的,在不同的编译器里,占的字节是不一样的。枚举类型(enum)是C语言中的一种特殊类型,它允许程序员定义一个有限的、可枚举的数据集。void* 是一种无类型指针,它可以指向任何类型的数据,也可以接受任何类型指针的赋值,但是它不能直接解引用或进行算术运算,必须先转换为具体的类型指针才能操作。它是一种特殊的变量,用于存储内存地址。在这个例子中,定义了一个名为Weekday的枚举类型,它包含了7个枚举成员,分别表示一周中的7天。
2023-06-28 17:11:56
786
原创 2022,4,1 算协笔记
进制转换:把十进制转换为二十六进制:方法:1.首先找到某个十进制数n,将其转换为x进制的数;2.将其mod x,并将余数保存,再将n/x,继续mod x ,存余数,直到n为零;3.因为先存的是低位,后面死高位,所以还需要把存下来的数翻转过来,就是答案;滚动数组:题目描述:给定数列1,1,1.....,从第四位开始,后面的数就是前三项之和,求2019324项数的后四位数;代码:本文所有代码来自:第十届蓝桥杯真题_糕小芝的博客-优快云博客代码的意思:
2023-06-27 16:50:29
71
原创 AcWing算法基础课——数据结构
基础课中所有的数据结构都是用数组模拟的2.1 单链表单链表是一种数据结构,是一种线性结构,每个节点都有一个val值和下一个节点的地址只能单向遍历。在这里用数组模拟单链表。const int N=1e5+10;int e[N],ne[N],head=-1,idx;//定义头节点,e数组存储值,ne数组存储下一个节点的下标。void add_head(int x)//添加头节点{ e[idx]=x; ne[idx]=head; head=idx++;}//...
2023-06-27 16:47:43
64
原创 struct和union的区别
是一个构造数据类型它将不同类型的数据组合成一个整体,也就是说可以自义定数据类型。例如声明一个结构体people在这里定义了一个人的结构体,包含三个数据类型。
2023-06-27 16:43:20
70
原创 动态规划(最长上升子序列)
当怪盗基德只往右飞的时候,如果以任意一栋楼 i 作为起点,那么就可以看成以 i 为端点的最长下降子序列,也就是从右往左的最长上升子序列。当怪盗基德只往左飞的时候,如果以任意一栋楼 i 作为起点,那么就可以看成以 i 为端点的最长上升子序列。用 N 个建筑排成一条线,高度不尽相同,怪盗基德可以。,求怪盗基德最多可以落多少个建筑物。因此这个题目的解题思路就是分别。求一遍最长上升子序列,然后。,向左或者向右飞行,但是。
2022-11-20 17:02:07
152
原创 每日一题
给出一个字符串s和一个空字符串t,会不断的将s的头部字符取出放入t的末尾和将t的末尾字符取出打印出来。如果不看题目的要求限制。我们可以将其看作一个。
2022-10-12 20:17:09
146
原创 每日一题
这里有个小细节就是哈希表可以使用 map,因为 map 可以自动排序,我们只需要从头遍历每一个点对应的键值是否为 n-1,然后输出,这就是最小的 i。给出 n 个点,一共有 n-1 条边,问是否存在一个点 i,使得所有其它点能够直接或间接(当然也有其他方法可以做,有兴趣可以点击题目链接去看看其他的题解。)的到达点 i,如果有,请输出最小的 i。最容易想到的方法就是用邻接表存储图。
2022-09-27 21:05:11
358
原创 每日一题
# 题目大意给出一个 n 行 m 列的二维二进制矩阵(只有 0 和 1 两个数),再给出一个数 cols 表示你**一共要选出 cols 列**。对于每一行,如果***这一行中的所有 1 都在你选中的列中***,那么称此行被覆盖。问:最多能有多少行被覆盖?
2022-09-19 20:47:07
100
原创 力扣周赛86第二题
将一个数 n 转化为 b 进制(b 为 2 到 n-2 的整数),如果在 b 进制下 n 都是回文字符串,那么 n 是严格回文的。是则返回 true;否则返回 false。直接将 n 的每一个 b 进制表示出来,在一个个判断是否回文,可以枚举。{% tip info %}知识点:进制转换{% endtip %}
2022-09-11 19:58:22
187
原创 每日一题题解
对于当前第 i 个数对,如果可以和之前的某一个数对 j 形成数对链,那么 dp[i] 就可以更新为 dp[i] 和 dp[j]+1 的较大值。通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。给出 n 个数对,设 [a,b] , [c,d] (的题目所使用的方法类似,可以使用动态规划。,数对可以以任意顺序排列,
2022-09-03 17:17:32
151
原创 【无标题】AcWing算法基础课——基础算法
AcWing算法基础课1.1 快速排序快速排序属于分治算法,快速排序的算法步骤,用分治的思想确定分界点,数组内任意一个值(这里建议取中点,即(l+r)/2); 调整区间,让x左边的数都小于x,右边的数都大于x; 递归处理左右两个区间,直到细分到不能细分对于第二步的调整区间,具体就是弄两个指针,分别指向数组的左右边界;不断的向中间遍历,将遍历过程中左边比x大的数和右边比x小的数交换;直到i,j相遇。快排模版void quick_sort(int q[],int l,int r)
2022-04-19 14:23:56
5152
原创 类的学习。
#include<iostream>using namespace std;class Circle{private: float radius; int *p_index;public: Circle(float r=1.0,int index=100);//构造函数的声明 ~Circle(); //析构函数 Circle(Circle &c); //拷贝构造函数 float area();};Circle::Circ.
2022-04-15 17:18:24
193
原创 构造函数(..)
#include<iostream>//下次实验题选做题using namespace std;const float FencePrice=35.0 , ConcretePrice=20.0;class Circle{ private: float radius; public: Circle(float r);//构造函数的声明 float area(); float perimeter(); .
2022-04-08 17:29:17
282
原创 DP(遇到的题目可以dp的)
/* 状态表示 { 1.集合:dp[i]表示前i个字符最多保留多少个 2.属性:max } 状态计算 { 1.不保留这个字符:那么这个就是与上个状态一样:dp[i]=dp[i-1] 2.保留这个字符:那么就要把中间的都删掉,即是把这个字符与前面出现过这个字符之间的字符全都删掉,再加上这两个字符: dp[i]=dp[pre[s[i]-'a']-1]+2(前提是要前面出现过) } 状态转移方程:dp[i]=max(dp[i-1],dp[pre[s[i]-'a'].
2022-04-06 21:31:51
259
原创 基础语法
HTMl 是一种超文本语言;1.标签:1.单标签1.无属性的标签: 写法为:<标签名 /> 就可以了2.有属性的标签:写法为:<标签名(空格)属性名=“(具体的参数)” />2.双标签双标签与单标签类似,不同的是有两个标签名1.无属性的标签:写法为:<标签名></标签名>2.有属性的标签:写法为:<标签名 属性名=“(具体的参数)”></标签名>(要注意的是:当一个标签里面写多个属性的时候,每个属性之
2022-04-02 15:53:13
339
原创 记录一下vector基本用法(简单易懂)
vector容器的初始化vector的使用首先需要加一个头文件#include<vector>;vector<int> a; 最一般的初始化方法,就是定义一个容器啊a;vector<int>a(n); 定义一个长度为n的容器a;vector<int>a(n,x); 定义一个长度为n,每...
2022-03-12 09:17:48
5913
原创 刷题笔记(知识点:排序,双指针)
不多废话,直接上代码;class Solution {public: vector<vector<int>> merge(vector<vector<int>>& in) { if(!in.size()) return {}; sort(in.begin(),in.end()); vector<vector<int>> ans; fo..
2022-02-26 13:14:34
208
原创 刷题笔记(知识点:单指针,双指针...)
这个题目来一个排序就可以解决,但是让我感兴趣的是如何遍历一边就弄完,先附上我写的代码:class Solution {public: void sortColors(vector<int>& n) { int point =0;//基本的单指针o(n),交换0和1,遍历两次; for(int i=0;i<n.size();i++) { if(n[i]==0) swap(n[point],...
2022-02-25 22:04:31
288
原创 刷题笔记(知识点:双指针)
这个题目第一眼看上去就会想到用三重循环,但是用完之后会发现超时,所以需要去优化。身为小白的我肯定是想不出来怎么优化的,于是我为了不浪费时间,果断去看了官方题解。双指针:当需要枚举数组中的两个元素的时候,如果发现这两个元素当其中一个是递增的时候,另一个随之递减,那么就可以将原本o(n^2)的时间复杂度降为o(n)。当左指针向右移动一个位置的时候,右指针会向左移动若干个位置。在这个题目里面,因为有三个数,所以还需要在外面套一程循环,并且因为不能重复的原因,也就是这三个指针移动的时候,..
2022-02-24 16:09:45
698
原创 刷题笔记(知识点:投票算法)
这个题可以用哈希表计算,也是只需要将整个数组遍历一遍,然后记录每个数字出现的次数,当某个数出现超过n/2的时候,这个数就是答案;在官方题解中,我看到了一种算法,是叫做投票算法;不妨假设整个数组的众数记做a,则最初的数组中a的数量大于其余所有数。当采用count计数的时候有两种情况:1)假设candidate等于a,则当count从1变为0的过程,此区间内a的数量等于其余数的数量,因此以count=0为分界线,数组右端部分的众数仍然为a2)假设candidate不等于a,则当count..
2022-02-24 15:00:38
147
原创 2021-10-27
C语言入门首先,来学习C语言的人,最关心的应该是怎么样快速的上手。我建议大家在开始学习的时候就要上机实践,从刚开始的模仿到自己默写,最后在别人的代码的基础上自己来改善,规划,让它彻底的成为自己的知识。学习C语言会是一个漫长的过程,并不是一蹴而就的,我们不仅要学习语言知识,还要不断的熟悉代码的编写,学习计算机语言,最重要的应该就是实践。程序的执行过程实际上是对程序所表示的数据进行处理的过程,总之,c语言是一种程序设计语言,是人与计算机交流的语言,我不多展开赘述,我们直接来看代码。学习语言有个不成文的规
2021-11-07 20:08:16
661
原创 2021-10-27
c语言初学者 我会整理自己学习c语言中的一些经验和一些我觉得比较有意思的代码并分享给大家。 希望自己能在学习的过程中也能帮助到其他人
2021-10-27 20:30:25
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人