- 博客(24)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 kmp应用
匹配统计阿轩在纸上写了两个字符串,分别记为A和B。利用在数据结构与算法课上学到的知识,他很容易地求出了“字符串A从任意位置开始的后缀子串”与“字符串B”匹配的长度。不过阿轩是一个勤学好问的同学,他向你提出了Q个问题:在每个问题中,他给定你一个整数x,请你告诉他有多少个位置,满足“字符串A从该位置开始的后缀子串”与B匹配的长度恰好为x。例如:A=aabcde,B=ab,则A有aabcde、abcde、bcde、cde、de、e这6个后缀子串,它们与B=ab的匹配长度分别是1、2、0、0、0、0。因
2021-01-25 15:23:30
208
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二维字符串 hash
矩阵给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。接下来一个整数Q。接下来Q个A行B列的01矩阵,数字之间没有空格。输出格式对于每个询问,输出1表示出现过,0表示没有出现过。数据范围A≤100,M,N,B≤1000,Q≤1000输入样例:3 3 2 211100011131100111100
2021-01-24 19:24:58
1836
6
原创 星空之夜
星空之夜夜空深处,闪亮的星星以星群的形式出现在人们眼中,形态万千。一个星群是指一组非空的在水平,垂直或对角线方向相邻的星星的集合。一个星群不能是一个更大星群的一部分。星群可能是相似的。如果两个星群的形状、包含星星的数目相同,那么无论它们的朝向如何,都认为它们是相似的。通常星群可能有 8 种朝向,如下图所示:现在,我们用一个二维 01 矩阵来表示夜空,如果一个位置上的数字是 1,那么说明这个位置上有一个星星,否则这个位置上的数字应该是 0。给定一个夜空二维矩阵,请你将其中的所有星群用小写字母
2021-01-28 15:10:55
191
原创 数独进阶版求解
数独请你将一个16x16的数独填写完整,使得每行、每列、每个4x4十六宫格内字母A~P均恰好出现一次。保证每个输入只有唯一解决方案。数独2.jpg输入格式输入包含多组测试用例。每组测试用例包括16行,每行一组字符串,共16个字符串。第i个字符串表示数独的第i行。字符串包含字符可能为字母A~P或”-“(表示等待填充)。测试用例之间用单个空行分隔,输入至文件结尾处终止。输出格式对于每个测试用例,均要求保持与输入相同的格式,将填充完成后的数独输出。每个测试用例输出结束后,输出一个空行。输
2021-01-27 21:25:13
1296
2
原创 dfs 应用
木棒乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式为每组数据,分别输出原始木棒的可能最小长度,
2021-01-27 11:46:12
213
原创 表达式计算
表达式计算给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值。数据可能会出现括号情况,还有可能出现多余括号情况。数据保证不会出现大于或等于231的答案。数据可能会出现负数情况。输入格式输入仅一行,即为表达式。输出格式输出仅一行,既为表达式算出的结果。输入样例:(2+2)^(1+1)输出样例:16#include <iostream>#include <algorithm>#include <cst
2021-01-26 21:44:11
466
原创 dfs 实践:数独
数独数独是一种传统益智游戏,你需要把一个9 × 9的数独补充完整,使得图中每行、每列、每个3 × 3的九宫格内数字1~9均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,代表数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1-9)或一个”.”(表示尚未填充)。您可以假设输入中的每个谜题都只有一个解决方案。文件结尾处为包含单词“end”的单行,表示输入结束。输出格式每个测试用例,输出一行数据,代表填充完全
2021-01-26 21:27:44
229
1
原创 树的最小表示
树形地铁系统#include <iostream>#include <algorithm>#include <cstring>#include <vector>using namespace std;int n;// 数的最小表示法,用 01 序列表示子树,然后按照字典序排序string dfs(string &s, int &u) { // 跳过根节点 u ++; vector<string
2021-01-24 21:15:41
369
原创 最大矩形问题
城市游戏有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形土地,要求这片土地都标着’F’并且面积最大。但是rainbow和freda的OI水平都弱爆了,找不出这块土地,而蓝兔也想看freda卖萌(她显然是不会编程的……),所以它们决定,如果你找到的土地面
2021-01-24 16:01:47
147
原创 线性表
线性表定义:由零个或多个数据元素组成的有限序列。注意:-它是一个序列,元素之间有先来后到;List item若原诉存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且仅有 一个前驱和后继。线性表处理的元素是有限的。如现有线性表即为(a1,a2,…,ai-1,ai,ai+1,an),则表中ai-1领先于ai,ai领先于ai+1,ai-1就是ai的直接前驱元素,ai+1是a...
2020-04-02 18:12:42
162
原创 时间复杂度
数据结构程序设计 = 数据结构 + 算法时间复杂度O(n)也可称为大O阶T(n) = O(f(n));f(n)是问题规模n的某个函数;一般情况下,随着输入规模n的增大,T(n)增长最慢的为最优算法。求解方法:用常数取代运行时间中的所有加法常数;在修改后的运行次数中,只保留最高阶项;如果最高阶项存在且不是一,则除去与他相乘的常数;得到的即为大O阶。时间复杂度的大小比较:...
2020-04-02 17:26:33
126
原创 结构体入门
#include<stdio.h>struct date{ int day; int month; int year;}x,y;int main(){ struct date today; today=(struct date){13,12,2018}; struct date day; da...
2018-12-24 22:10:17
131
原创 初建链表
一.#include<stdio.h>#include<stdlib.h>typedef struct node{int date;struct node *next;}Node;int main(){Node *head=NULL;int number;do{scanf("%d",&number);if(number!=0){Node ...
2018-12-24 22:08:32
131
原创 求素数
#include<stdio.h>#include<math.h>int isprime(int a[],int n,int k){int ret=1,i;for(i=0;i<k;i++){if(n%a[i]0){ret=0;break;}}return ret;}int main(){const int number=5;int...
2018-12-12 16:58:41
120
原创 strcat字符串函数
#include<stdio.h>#include<string.h>char *str_cat(char str1[],char str2[]){int i=0;int j=strlen(str1);while(i!=strlen(str2)){str1[j]=str2[i];i++;j++;}str1[j]=’\0’;return str1;}...
2018-12-12 16:54:54
274
原创 递归
1.求小朋友年龄#include"stdio.h"int age(int n){if(n==1)return 6;elsereturn age(n-1)+6;}int main(){printf("%d",age(5);return 0;}
2018-11-23 20:57:46
153
原创 函数
1.函数定义在前时使用可以不声明,函数定义在后时必须声明.2.#include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt;int sum1=0,sum2=0;int main(){int count(int array[],int i);int j,b[10]={1,2,3,4,5,6,7,-5,9,0};j=count(b,10);printf(&amp;amp
2018-11-23 16:40:28
199
原创 数组添加
一.比如,1 2 3 4 5,删除 3 是不是成了 1 2 4 5。想想,1、删除导致元素减少2、4的位置到了3,5的位置到了4总结:所谓删除逻辑就是,后面一个数覆盖前面一个数,最后数量要减少了1。总结:1、先执行添加操作,再执行数组长度 + 1 的操作2、刚被添加的元素在数组末位3、这里是数字,升序还是降序排列,随你,用我第一篇博客的方法去实现...
2018-11-03 16:09:06
340
原创 switch
#include <stdio.h>int main(){/* 定义需要计算的日期 */int year = 2008;int month = 8;int day = 8;int sum = 0;for(int i=1;i<month;++i){switch(i){case 1:case 3:case 5:case 7:case 8:case 10:cas...
2018-11-03 15:10:56
177
原创 数组
1.①int arrFirst[1]={1};②int arrSecond[2]={1,2};③int arrThird[3];arrThird[0]=1;arrThird[1]=2;arrThird[2]=3;2.多维数组的初始化分为两种:数据类型 数组名称[][][][]…[]={{},{},{},。。。。{}};3.数据类型 数组名称[][][][];数组名称[下标1][下标2][下...
2018-11-03 15:03:24
108
原创 基本
1.%d 表示整数 %f 表示小数 %s 表示文字 %c表示字母;2.// * *\ 表示注释;3.两个字母相余是用两个%;4.a++把上一行的值直接赋给下一行,++a上一行加一再赋给下一行,a–与--a同样道理;5.a -= 2 等价于 a= a-2 其他几种运算同上;6.&amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; 与 !非
2018-11-03 14:59:58
144
原创 算术运算符.
算术运算符%3.2d表示结果为3位数且小数点后保存两位小数;a=(int/float/double)b+c表示强制转换;double %lf,float %f;
2018-11-03 14:52:13
176
原创 字符与
字符串1.char a[5]={‘a’,‘b’,‘v’,‘c’,‘w’}2.char a[]={‘a’,‘b’,‘v’,‘c’,‘w’,’/0’}3.char a[]={“finish”}4.char name[5];name[0]=‘a’;
2018-11-03 14:40:09
136
原创 指针
一.指针1.变量前为指针类型,例:int*;2.指针加减int 1=4个字节;char 1=1个字节。3.指针的初始化:通过一个地址去赋值;通过堆内存赋值。4.指针函数是函数,函数指针是指针。5.#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
2018-11-03 14:34:08
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人