- 博客(21)
- 收藏
- 关注
原创 拓扑序列模板
bool toposort(int n, vector<int>edges[maxn], vector<int>& ans) { //返回值判断是不是环,(n个节点,存图的邻接表,存储拓扑序的数组)void initEdge(int n,vector<int>edges[maxn]) { //初始化邻接表(n个节点,邻接表)void addEdge(vector<int>edges[maxn], int u, int v) { //给邻接表加边。q.empty()) { //开始广搜求拓扑序列。
2025-03-25 17:53:25
287
原创 高精度模板
private:int m_size;public:bigint();int b = 1;m_size = 0;i >= 0;--i) {b *= 10;b = 1;m_size++;m_size++;i >= 0;--i) {j > 0;j /= 10) {return 0;
2025-02-06 16:04:39
464
原创 顺序表vector
int size;++i) {i > index;--i) {++i) {++i) {return i;return -1;return 0;
2025-01-16 13:26:41
261
原创 找相似对问题
一对数,如果奇偶性相同,或者他们是相邻数,那么他们就是相似的。然后我们判断一个数组能否划分成所有的相似对。这题是这样的,因为相邻数奇偶性肯定是不同的,我们不需要在意到底有多少相似对,如果这里面一共有a个奇数b个偶数,那么应当注意,如果a和b都是偶数,那么肯定可以凑,如果都是奇数呢?那么只需找出一对相邻的出来,如果一奇一偶那么没办法了
2024-12-05 21:05:29
157
原创 此问题可以归结为找字符串中的子串不存在的最小字典序
到这就是将所有的小于5的子串枚举出来,因为字符串的长度决定它不可能包含所有小于5的子串。到了z就不能再加了,而且要重置为a了,类似进制。解决函数,由于数据量不大,所以可以穷举。倒序增值,这是因为字典序的比较方式。这里用了一个计数的函数。
2024-12-03 21:13:58
227
原创 进制转化(栈)
return "0";num = -num;ans = "-";num /= 7;while (!s.pop();return ans;
2024-11-29 22:22:44
233
原创 字符串的不存在最小子串问题
首先肯定是从a到z查找一遍,那么接下来该如何做呢,假设a到z都有,那么先把a存到数组的第一个元素吧,然后我们再遍历一遍数组,找到a后面的那个数,再从a到z遍历一遍吗,好像可行,如果还不行那就再把a放到第二个元素里ok试一下。最小是指字典序最小,还要不存在在字符串的子串中,该怎么做呢。
2024-11-29 22:14:19
131
原创 一道回文的题
2.分析出所有不可能的情况即可了,首先如果不是?的两头都无法回文的话肯定不是了,然后就是考虑a,b再满足已有的0,1需要多少个这方面够不够的问题,还有一点需要注意,就是a+b的个数减去必须的01是否等于?的总个数,最后考虑奇偶和字符串中间量即可。1.首先注意审题,是要构成a个0和b个1的回文串。
2024-11-21 10:58:58
442
原创 关于排序的使用方法
重点就在于排序规则的这个函数,他一般是布尔类型的即直接判断比如一下这个函数。即如果在排序函数中的规则是这个函数,总能保证前一个放前面和最大。形式一般是(开始的范围,结束的范围,排序规则)类比一下降序的排序应该是这样的。排序一般指sort 函数。
2024-11-09 22:35:31
150
原创 指针函数的使用
当函数返回值为一个数组时,可以使用指针函数。其中,当数组的大小随输入值改变而改变时,可以使用堆内存 int* ret = new int[100];,其中数组的大小可以改变。返回值是数组的首地址。
2024-09-04 18:38:59
245
原创 指针数组和数组指针
p = &a[0];cout << "a数组的第" << i << "行第0个元素的地址" << s << endl;cout << "a数组的第" << i << "行第1个元素的地址" << s << endl;cout << "a数组的第" << i << "行第2个元素的地址" << s << endl;cout << "第" << i << "个[4]数组的地址是" << s << endl;cout << "a数组的第" << i << "行第0个元素的地址" << s << endl;
2024-08-29 18:45:55
339
原创 指针数组和数组指针
/为什么是列数不是行数呢,因为指针会指向数组的每一行,而每一行的下一个数的地址都是相邻的。他的形式是这样的,他也就是比普通的指针多了一个[5],数组指针可以类比成一个二维数组。//这里的二维数组每一行只能有5个元素,因为上面已经定义了这个指针的列数是五。//指针数组 指针数组,本质上还是一个数组,数组的每一个元素类型都是指针。//这里地址偏移一下代表着同一行相邻的数组,最后打印出来的就是全部数组。//这里解释一下,以下的每一次定义都是对数组每一行的指向。//这里得到的还是一个地址。
2024-08-09 19:31:46
753
原创 指针的定义和解引用
/这一步是把a的地址赋值给指针pa,这一步就是精准定位啊,无论你a的地址怎么变,我pa都能把你找到,如果是普通的变量的话,地址只是变化前的。//&*pa = &(*pa) = &a = pa 所以说&和*就是一个互逆的关系相当于+和-,先计算右边。//2.指针的解引用 拿到a的地址了,接下来该干点啥了,我现在要拿到a的值做一些修改。//*&a =*(&a)=*pa=a 这个意思就是对a取地址再解引用得到的就是a。//pa = &b;//指针是可以多次赋值的,现在pa变成b的地址了。
2024-08-08 11:51:39
335
原创 怎么判断一个数是否为素数
对于每个给定范围内的取值,如果表达式的值都为素数,则输出“OK”,否则请输出“Sorry”,每组输出占一行。输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)最后一步即判断是否都为素数,如果有一个不是程序直接结束flag变为1即可。(-39<=x<y<=50),判定该表达式的值是否都为素数。只需要验证到根号x以下就可以了如果根号n以下没有那就没有。如果两个数都是0程序结束。
2024-08-08 08:20:26
286
原创 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
一开始我想这样,但这是错的,所以我该怎么将数据存储到这个数组里再输出出来 在 C 语言中,数组的大小必须在使用前已知,并且这个大小在整个程序的运行过程中不能改变。因此,数组的大小通常由常量来定义,而不是变量。对于每个给定范围内的取值,如果表达式的值都为素数,则输出“OK”,否则请输出“Sorry”,每组输出占一行。输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。这是给数组赋值的方法但是是自己手动输入,有没有自动输入的方法呢。
2024-08-08 07:21:14
712
原创 假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。
总结一下,求平均值的过程是这样的,我们首先定义一个一维的浮点型数组,将每一行的数存储到数组中得到sa[i],这个i的范围是我们自己规定的n,然后我们将这数组中的每一个数都除n,这样每个平均数就都存到数组里了,我们就可以访问了比如像这样。接下来我们需要找出一个整数,这个整数是学生数也就是行数,我们需要将每一行的每一个元素与其相同列数的ca平均值进行判定,这时候我们依然利用for循环进行枚举就可以,并且注意判定时放在嵌套for循环里就可以了,这个有一点绕。第一行包括n个数据表示n个学生的平均成绩;
2024-08-07 11:21:15
1498
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅