c++
NCU-wfb
go!go!go!
展开
-
字母对子串的贡献值
我们通过两道题进行介绍相关概念题目一对于这类题,如果我们暴力解答,也就是先求出所有子串的值然后分别进行统计,放平常的话,是一种方法。但是,这类题,我们注意到字符串长度上限是n^5,按常规方法是肯定会有一些测试集超时而无法完全通过。有一种巧妙的方法就是计算每个位置上的字母的贡献值然后进行相加。这道题是统计不同字符的个数,相比于下道题简单些。就是需要统计当前子串中,第一次出现的字母的个数。我们需要思考一下,什么时候这个下标上的字母才能发挥它在这个题目中的对应作用呢。便产生了一个区间:当前下原创 2022-03-19 21:29:42 · 426 阅读 · 0 评论 -
数据结构-循环队列
#include<bits/stdc++.h>using namespace std;#define MAXSIZE 10//注意:对于循环队列来说,为了区别空或者满,不得不永远浪费一个空间,也就是front所在的位置。typedef struct MyQueue { //头指针和尾指针 int data[MAXSIZE]; int front; int rear;}MyQueue;//循环队列的创建MyQueue* create(){原创 2022-01-10 21:30:31 · 195 阅读 · 0 评论 -
数据结构-栈
栈的特点:先进后出#include<bits/stdc++.h>using namespace std;//栈的定义typedef struct Node{ int data; struct Node *next;}Node;typedef struct stack { //表示一个链表,但始终让其指向头部 Node *top; int count;}MyStack;//入栈MyStack* push(MyStack* myStack原创 2022-01-10 20:52:53 · 412 阅读 · 0 评论 -
数据结构-链表
#include<bits/stdc++.h>using namespace std;//数据结构小知识://抽象数据类型(ADT)是指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的名称//具体包括三个部分:数据对象,数据对象上关系的集合,以及对数据对象基本操作的集合/* * ADT 抽象数据类型 { * 数据对象: <数据对象的定义> * 数据关系:<数据关系的定义> * 基本操作:<基本操作的定原创 2022-01-10 20:25:01 · 274 阅读 · 0 评论 -
迷宫问题求解-DFS
先看问题描述分析对于该地图,我们可以创建一个稍微大点的二维数组,根据输入的n,m将有效的地图初始化为1同时,在输入障碍物坐标后,将其改为0。因此,我们可以不用考虑地图边界问题,因为无效地图在二维数组中的数值为0,已经表达了不能到达的意思。其他要注意的地方就是vis, 记住在什么时候对其进行修改就好了。别忘了这是能够进行回溯的;解题代码:#include <bits/stdc++.h>using namespace std;int n, m, t, sx, sy, fx, f原创 2021-12-15 17:35:23 · 131 阅读 · 0 评论 -
八皇后问题求解
问题描述八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。我们看洛谷上的该题描述大致思路1.按照行的顺序进行2.从第一列到最后一列进行枚举。判断当前列是否能够放置,如果不能,进行下一列的判断3.请结合注释了解相关具体过程代码解法一:#include <bits/stdc++.h>using原创 2021-12-14 16:52:18 · 291 阅读 · 0 评论 -
素数总结(包含素数表)
素数总结一.素数的定义对于一个大于等于2的正整数n,如果从2,3,…n-1都没有一个数能够整除n,则n为素数二.素数的判断bool isPrime(int n) { if(n == 1) { return false; } for(int i=2; i<n; i++) { if(n%i == 0) { return false; } } return true;}由数学知原创 2021-12-12 19:56:07 · 927 阅读 · 0 评论 -
总结 - 图
图一:图的表示1.邻接矩阵表示法int G[N][N];2.邻接表在一些顶点数目较多的时候最好使用邻接表来存储图//使用(可变数组)vector进行表示,十分方便。vector<int> Adj[5];//当要添加一个元素时,例,对于顶点1,添加到顶点3的一条路径Adj[1].push_back(3);如果要同时存储边的终点编号以及边值,使用结构体struct Node{ int v; //边的终点编号 int w; //边权 //这里我原创 2021-12-10 22:33:03 · 298 阅读 · 0 评论 -
日期差值问题
题目:输入两个日期(前后大小不确定),输出其差值例:输入:20211207 20211206输出:1分析:首先每个月份的天数是不一样的,没有规律,而且需要考虑平年还是闰年。如果硬算的话,需要考虑每个月天数程序会比较复杂。这里我们可以提前设置一个二维数组,记录平年闰年的不同月份所对应的天数,会简易很多。主体思想就是:首先对其进行拆分出年、月、日。设置一个记录天数差值的变量。整体一个while循环,结束条件是年月日都相同。首先day++, 判断是否超过本月天数上限,如果超过的话,进行一个轮转,d.原创 2021-12-09 23:17:54 · 283 阅读 · 0 评论