字符串
Ziiyan
这个作者很懒,什么都没留下…
展开
-
UVA - 202 Repeating Decimals
题目大意:求循环小数,循环节用()括住,并输出循环节长度。解题思路:a/b 时,b 不变,a 取余数循环除 b,当 a 出现相同数值时,小数开始循环,所以有一个数组用来判断被除数是否出现过。模拟除法过程,储存商,当余数重复,停止运算。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cma原创 2016-07-23 19:44:24 · 249 阅读 · 0 评论 -
UVA - 10361 Automatic Poetry
题目大意:给出两个序列,第一个 s1s3s5,第二个 S…。输出两个序列,第一个删除括号,即 s1s2s3s4s5,第二个将 s2 与 s4 交换位置后替换…,即 Ss4s3s2s5。解题思路:读入两个序列,以括号为分界分别赋值给 5 个字符串,按需求输出。#include<iostream>#include<cstdio>#include<string.h>using namespace s原创 2016-07-04 18:01:28 · 194 阅读 · 0 评论 -
UVA - 537 Artificial Intelligence?
题目大意:给出 P,U,I 中任意两个量,根据 P = U * I 求剩下的。解题思路:读取字符判断是否出现 P,U,I 且下一位为 =,用 %lf 直接读入数字,重复两次后计算即可。一开始自己全部读入题目再判断是否是数字,将字符化为数字,较繁琐而且一直 WA#include<iostream> #include<cstdio>#include<string.h>using namespace原创 2016-07-05 23:50:31 · 610 阅读 · 0 评论 -
UVA - 401 Palindromes
题目大意:判断是否回文、镜面。回文即从左往右与从右往左相同。镜面根据所提供的表格,可能存在非法字符。一开始理解错题意,以为不存在非法字符就是镜面,实际上是从左往右根据表格将全部字符化为镜像后,要与从右往左相同。解题思路:回文简单不赘述。用数组把镜像按顺序存储,字母和数字要分开,判断的时候读取对应镜像与从右数相同位置的字符比较。#include<iostream>#include<cstdio>#原创 2016-07-04 18:01:53 · 266 阅读 · 0 评论 -
UVA - 409 Excuses, Excuses!
题目大意:输入一些关键字和几句话,求出现最多个关键字的那句话,重复出现累加。解题思路:储存关键字和话,去比较就可以了。一开始当成子串去比较,实际上完整单词相同才能算。#include<iostream> #include<cstdio>#include<string.h>using namespace std;char word[25][25];char str[25][100];cha原创 2016-07-05 23:51:02 · 227 阅读 · 0 评论 -
UVA - 10878 Decode the tape
题目大意:解密。观察样例,每个字符有对应的一种输入。可以看出输入中点的位置是不变的,除去边界和点剩下共 8 位,空格为 0,o 为 1,显然是二进制表示,化为十进制即对应 ascll 码。解题思路:将输入化为 0 和 1 然后化为 ascll 码输入即可,这题主要是理解题目比较难。#include<iostream> #include<cstdio>#include<string.h>usin原创 2016-07-05 23:51:30 · 251 阅读 · 0 评论 -
UVA - 10815 Andy's First Dictionary
题目大意:输入文章,将文章中的单词按字典序排列输出。解题思路:储存每个单词然后排序。时间复杂度比较大,容易 TLE,要优化算法,顺便学了一下快排,希望今后能记住。还有比较坑的是出现 RE,数组要开大一些。#include<iostream> #include<cstdio>#include<string.h>using namespace std;char word[100000][500]原创 2016-07-05 23:51:58 · 261 阅读 · 0 评论 -
UVA - 644 Immediate Decodability
题目大意:给出几个字符串,判断互相之间是否是前缀。解题思路:只要与后面的串相比,从 0 开始,边界是较短的字符串,若完全相同则是前缀。#include<iostream> #include<cstdio>#include<string.h>using namespace std;char code[10000][10000];char s[10000];int count = 0;in原创 2016-07-06 15:56:40 · 196 阅读 · 0 评论 -
UVA - 10115 Automatic Editing
题目大意:根据给出的替换规则替换字符串,要按照规则顺序,整个字符串都找不到后才能进行下一个规则。解题思路:查找规则子串,标记在字符串中的头尾位置,创建一个临时数组,将替换后的串放入临时数组,接上尾部以后的原串,然后再将这个临时数组接到原串中标记的规则串头部。即原串 = a < b > c,b 替换后为 d,创建 temp = d,接入 c,再将 temp = d + c 接入 a,即 a + d +原创 2016-07-06 15:57:19 · 250 阅读 · 0 评论 -
UVA - 1586 Molar Mass
题目大意:给出只含 C,H,O,N 的分子,求分子量。解题思路:找到原子,提取原子后的数字即原子个数,乘原子量再相加即可。字符减去 ‘0’ 化为对应数字,连续数字乘以 10 进位后再加。 #include<stdio.h> #include<string.h> using namespace std; char s[100]; int num(int i) { int n=1;原创 2016-07-04 18:00:56 · 241 阅读 · 0 评论 -
UVA - 1368 DNA Consensus String
题目大意:输入 m 个长度均为 n 的 DNA 序列,求一个 Hamming 距离最小的序列,即最相似的序列,多解要求字典序最小。并输出距离。Hamming 距离等于字符不同的位置个数。解题思路:统计所有 DNA 序列中每个位置出现各个字符的次数,记录出现最多的字符与次数,将这些字符连接起来就是所求序列,每个位置的 Hamming 距离为 DNA 序列个数减去最大次数,各位置相加即可。 卡了比较久原创 2016-07-04 18:00:31 · 213 阅读 · 0 评论 -
UVA - 10010 Where's Waldorf?
题目大意:给出几行几列的字母和几个单词,从字母列表里找单词,单词要位于一条直线上,可以从八个方向求找,输出第一个单词在表中的位置,无视大小写。解题思路:输入时全部化为小写字母,找到第一个相同字母的位置先记录,然后按方向检索,成功就输出。#include<iostream> #include<cstdio>#include<string.h>#include<stdlib.h>#include原创 2016-07-12 18:15:28 · 176 阅读 · 0 评论 -
UVA - 1585 Score
题目大意:输入一个由 O 和 X 组成的串,统计得分。如果 O 连续出现,得分为连续出现的个数,X 为 0 分。如 OXOOX 的得分为 1+0+1+2+0=4。 解题思路:记录 O 出现个数并相加,出现 X 清零。 #include <iostream> #include <string.h> using namespace std; int main() {原创 2016-07-02 23:45:12 · 275 阅读 · 0 评论 -
UVA - 232 Crossword Answers
题目大意:输入黑白网格,白格都有字母。如果一个白格的左边或上方是黑格或边界,则这个白格是起始格。将起始格从第一行开始,从左到右进行编号。出横向和纵向单词,单词以起始格开始,碰到黑格或边界结束。 解题思路:用二维数组 map 记录网格,再用一个二维数组 num 数组记录起始格,遍历判断是否为起始格,是则输出编号,并从 map 对应位置开始输出单词。 注意编号宽度为 3,两个样例之间有一个空行。#i原创 2016-07-02 23:48:07 · 252 阅读 · 0 评论 -
UVA - 1225 Digit Counting
题目大意:记录从 1~n 的整数中 0~9 各出现多少次。 解题思路:用二维数组制表,后一个数中各数出现的次数加上前一个数的,输出时直接读取。#include <iostream>#include <string.h>using namespace std;int a[10005][15];int main() { memset (a, 0, sizeof(a)); for原创 2016-07-02 23:47:04 · 236 阅读 · 0 评论 -
UVA - 455 Periodic Strings
题目大意:一个字符串可以由某个长度为 k 的字符串重复得到,求最小周期 k 。如 abcabcabc 的周期为 3。 解题思路:从周期 1 开始枚举,比较相邻两个周期是否对应相同,遍历结束输出。#include <iostream>#include <string.h>using namespace std;char a[100];int main() { int T; c原创 2016-07-02 23:47:33 · 311 阅读 · 0 评论 -
UVA - 227 Puzzle
题目大意:5×5 网格,有一个格子是空的,其他都是字母。一共四种指令:A,B,L,R,分别表示将空格上、下、左、右的字母移到空格中。输入网格和指令(以 0 结束),输出执行指令后的网格。解题思路:二维数组模拟网格,用一个 char 类型的变量一边读一边执行,读入 0 结束,注意标记非法跳出后实际上并未读入完全,剩余指令会影响下一次的网格。#include<iostream>#include<cst原创 2016-07-04 17:58:54 · 291 阅读 · 0 评论 -
UVA - 1587 Box
题目大意:输入六个矩形的长和宽判断它们能否构成长方体。解题思路:先排序,判断是否有三对完全相同的面,并且能够连接在一起,即不相同的两个面中有一边要相等。#include<iostream>#include<cstring>#include<cstdio>using namespace std;struct st{ int w; int h;};st t[10];int原创 2016-07-04 17:59:44 · 268 阅读 · 0 评论 -
UVA - 1588 Kickdown
题目大意:给出两个长度不一定相同且每列高度为 1 或 2 的长条,将它们放入一个高度为 3 的容器,求最短容器长度。解题思路:想到字符串匹配,其中一个长条不动,另一个移动去匹配,高度为 3 则不能同时为 2。这里要考虑的是移动有两个方向,模拟为两种情况:上面的移动下面的不动,即上面的右移;上面的不动下面的动,即上面的左移。取两种中较短的。#include<iostream>#include<cst原创 2016-07-04 18:00:07 · 262 阅读 · 0 评论 -
UVA - 10340 All in All
题目大意:输入两个字符串 s 和 t,判断 s 是否可以从 t 中删除字符得到。解题思路:tag 从 s 的第一位开始标记,遍历 t,如果在 t中找到相等的字符就 tag++ 寻找下一位,遍历结束 tag 等于 s 的长度说明全部找到。#include<iostream>#include<string.h>#include<cstdio>using namespace std;char s[原创 2016-07-04 17:59:19 · 295 阅读 · 0 评论