字符串
Rancho__
这个作者很懒,什么都没留下…
展开
-
UVa-10082-WERTYU
这题的话,我们依旧可以看到它里面是有空格的,所以直接用getchar函数,不断地读入字符,然后用putchar函数输出。我们用for循环在字符串常量里面查找,如果在没到尾部且能找到的话,我们退出循环,然后输出对应的字母,如果找不到那就直接输出对应的字母,比如空格。#include <cstdio>int main(){ char s[]={"`1234567890-=Q...原创 2018-12-14 10:43:39 · 134 阅读 · 0 评论 -
UVa-1368-DNA序列
这题的话,我们每次统计的话,是以列为外层循环,以行为内层循环,逐一按列进行比较。统计完了之后,题目中要求说到要hamming值最小的,那我们就选用该列最多的字母就可以了,如果有数目相等的字母,那就按照字典序,选用字典序小的。所以我们可以一层循环,挑选倒着挑选最大的值,如果大于等于就修改值,因为我的比较数组里是按照ACGT排列的,所以这样一举两得。#include <stdio.h>...原创 2019-01-18 14:55:20 · 102 阅读 · 0 评论 -
UVa-213-信息解码
这题的话,我们只要理解题意,应该就不算很难。我们可以开一个二维数组,用来存放对应的编码字符,第一个下表是length,第二个下标是value,这样一来,我们在读入数据的时候就进行处理,然后想要使用的时候就可以直接找到。读完编码头之后,我们就不停地读入每一个小节,直到出现000。读小节的时候,我们不停地读入对应len的整数,然后输出该编码字符,如果值为全一,则该小节结束。putchar这个函数...原创 2019-01-18 17:27:14 · 143 阅读 · 0 评论 -
Comet OJ 热身赛-principal
这题的话,我们分析一下,入栈的操作是:栈空栈顶元素和当前操作元素不属于同一类括号栈顶元素和当前操作元素属于同一类括号,但是并不是左括号在前,右括号在后上面三个条件有任意一个满足都应该入栈,如果三个都不满足,那就弹出栈顶元素,因为这时肯定是匹配的括号。我们不必考虑栈内究竟是什么情况,我们要考虑的是,每个对应的元素,进行操作之后,栈顶的元素是谁,我们用序号入栈,代替原本的元素。我们可以...原创 2019-01-19 11:08:53 · 243 阅读 · 0 评论 -
UVa-156-反片语
这题比较精妙的是,我们对于单词重排,实际上是进行了标准化的处理,即按照字典序排序。这样的话,这样的话,就很方便地处理了单词的重排问题,我们不需要使用全排列函数进行排列尝试,我们直接化简为一,然后进行比较就可以了。然后我们使用map映射,映射每个单词的出现次数,只有等于一的,我们才输出原版的单词。最后输出的时候我们对于最初读入的单词库,进行遍历,看它的映射值为多少,先写入,再排序,最后输出即可...原创 2019-02-03 10:44:15 · 136 阅读 · 1 评论 -
UVa-10815-安迪的第一个字典
这题主要是使用STL和c++解决的,我们使用set和字符流节省我们的工作量。并且set中的元素不仅不重复,而且还按升序排序,这样写入set的直接输出就可以了。我们读入一行之后,对于是不是字母进行判断,如果是的话,我们就把它转成小写写入,按题目要求;如果不是的话,我们就把它转成空格,这样我们用字符串s初始化ss之后,再按照字符流写入,就可以很方便地只写入单词了。#include &lt;ios...原创 2019-02-02 17:28:48 · 176 阅读 · 0 评论 -
2019牛客暑期多校训练营(第七场)A String (字符串的最小表示)
思路这题思路如果是递归的话,应该是比较正确的。但是实际上只用切割两次就可以了。先把原串从后向前切割一次,再把每一部分切割一次。切两次的思路实际上是有漏洞的。递归的思路,终点是,如果串长为1,或者串的最小表示在0的位置。#include <iostream>#include <stdio.h>#include <string.h>using nam...原创 2019-08-14 10:41:18 · 113 阅读 · 0 评论 -
字符串的最小表示法
int getMinRepresentation(int *s, int n){ int i = 0, j = 1, k = 0; while(i < n && j < n && k < n) { int t = s[(i + k) % n] - s[(j + k) % n]; if(!t)...原创 2019-08-09 22:08:40 · 187 阅读 · 0 评论 -
hihoCoder-1014-Trie树
这题就是Trie树的应用,我们可以建立一个Trie树,每次插入单词的时候,我们都对该前缀进行加一的一个统计,这样,查询的时候就可以线性查询了。对于Trie树就是,我们设trie [ i ][ j ] =k ,意思就是编号为i的节点的第j个孩子就是编号为k的节点。什么意思呢?这里有两种编号,第一种就是i k编号,这是相对于整棵树而言的,第二种就是i j编号,这是相对节点i来说的。我们每...原创 2019-02-08 17:39:54 · 171 阅读 · 1 评论 -
UVa-232-纵横字谜的答案
这一题的话,输出的时候,我们要按照3位输出,不能按照两位,因为是10*10的网格,所以就是100位,不管有没有100的起始格,它都是按照3位进行输出的,从题上的输出可以看到,不然的话,就会PE。然后我们对于它的起始网格的处理,我们可以设置一个对应的网格,然后判断填数就可以了,然后我们判断的时候肯定要否定*号,所以就在判断语句之内加上num [i] [j] =-1的赋值就可以了。然后我们再对于它是...原创 2019-01-18 10:12:42 · 262 阅读 · 0 评论 -
UVa-227-谜题
这题的话,我们读入的时候,可以用scanf单个读入字符,也可以用getchar函数来读入。scanfscanf读入串字符的时候,遇到空格、回车和TAB等空白字符就会停止读入,但是如果读入单个字符就不会出现读入结束的情况,因为,我们就是用scanf函数来读入单个字符的,读入结果很理想。getchar如果是getchar的话,getchar本身就是读入字符,所以遇到回车和空格并没有什么问题。...原创 2019-01-17 16:18:12 · 83 阅读 · 0 评论 -
UVa-1586-分子量
这是一道字符串的题目,我们直接对字符串进行解析,然后计算就可以了。我是直接开了两个数组存入对应的值,没有进行判断,我们如果在if判断里面直接增加了i的值,最好先把对应的字符存起来,然后这样才不容易出错。#include <stdio.h>#include <string.h>#include <ctype.h>char s[105];int T...原创 2018-12-26 20:27:04 · 127 阅读 · 0 评论 -
UVa-1585-得分
#include <stdio.h>#include <string.h>int main(){ char s[100]; int T; scanf("%d",&T); while (T--) { scanf("%s",s); int len=strlen(s); int cnt=0,score=0; for (int i=0;i&l...原创 2018-12-26 20:28:48 · 82 阅读 · 0 评论 -
UVa-1584-环状序列
这题的话,字符串序列是循环的,我们对于for循环来讲,就不能再只看做下标了,我们把i的增加看做是计数,这样子就类似于一个偏移量了。然后从字符串的头到尾,我们每次偏移相同的大小,即字符串的长度(也是最大长度),用来比较究竟是以哪一个开头,字符串字典序最小。#include <stdio.h>#include <string.h>const int maxn=10...原创 2018-12-26 20:34:50 · 96 阅读 · 0 评论 -
UVa-401-Palindromes(回文)
这一题的话我们可以把映像字符的内容给放入一个字符串常量里面,然后开辟一个二维的字符串常量数组,里面放置答案。对于回文实际上是很好求的,对于镜像的话,我们写一个返回char的函数,让它接收一个char。接收之后进行判断,如果它是字母的话,我们就返回它减去'A'这个字母,得到的整数下标对应的镜像字符串中的字母。如果不是,我们就返回它减去字符0,得到它的整数值,然后加上25得到它的下标,然后...原创 2018-12-14 10:34:38 · 138 阅读 · 0 评论 -
UVa-272-TEX Quotes
这一题的话,因为题目中可能是有空格的,所以我们不能使用字符串读入,我们直接使用getchar函数,读入每一个字符判断一下是不是 " 如果是的话,我们就直接进行转换,然后翻转,下一次读入到 " 的时候我们就可以输出另外对应的字符了。而且我们输入和输出可以同时进行,不必说一定要先输入后,完成所有输入之后再执行输出。#include <cstdio>using namespace...原创 2018-12-14 10:21:09 · 75 阅读 · 0 评论 -
UVa-1339-古老的密码
这题的话,我们可以把字符串序列里面的字母直接计数,然后比较两个数组里面的数字是否一一相同,然后就可以直接判定YES or NO。因为它题目中说的就是一种映射的关系,首先我们读入之后,把两个字符串的不同字母个数给统计出来,然后我们做一个排序,排序之后,如果这两个数字序列的长短是一样的,就说明有映射的可能性。然后我们一一比较,只有每次每个从前向后的数组格子里面的填的数字个数相同才是可以的,因为...原创 2018-12-11 22:59:50 · 552 阅读 · 0 评论 -
洛谷 1013 进位制
题目描述著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如:+ L K V EL L K V EK K V E KLV V E KL KKE E KL KK KV其含义为:L+L=LL+L=L,L+K=KL+...原创 2018-10-28 16:31:35 · 260 阅读 · 0 评论 -
UVa-340-猜数字
#include <stdio.h>char ans[1000],gus[1000];int num[10];int main(){ int n,cnt=1; while (scanf("%d",&n)==1&&n) { printf("Game %d:\n",cnt++); for (int i=0;i<n;i++) { sc...原创 2018-12-26 20:56:26 · 75 阅读 · 0 评论 -
HDU-1251-统计难题 (trie)
这题就是Trie树,我们对于读入,用cin.getline()读入,如果他遇到enter就结束读入,所以字符串的长度就是0,然后我们就退出读入即可。Trie的简单讲解:https://blog.csdn.net/qq_41090676/article/details/86775990Trie的高质量详细讲解:https://www.cnblogs.com/TheRoadToTheGold/p/...原创 2019-02-08 18:04:40 · 130 阅读 · 0 评论