第3章 数组和字符串
紫书第3章例题和习题
徹夜禁止
日拱一卒,功不唐捐
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
习题3-11 UVa1588-Kickdown
本题的关键是将两个长条的嵌合想象成动态的过程:两长条嵌合只有两种情况,长条s向左移动嵌入长条t或者长条t向左移动嵌入长条s。 题目链接:UVa 1588 AC代码: #include <iostream> #include <string> using namespace std; int min(int a, int b) { if (a > b) retur...原创 2020-03-22 15:43:28 · 170 阅读 · 0 评论 -
习题3-9 UVa10340 - All in All
没啥难度的一道题,要注意把数组开大一点,我因为这个RE了很多次。思路主要有两种: 用主串t与子串属相匹配。 用子串s与主串t相匹配。 题目链接:UVa 10340 AC代码如下: 第一种思路: #include <iostream> #include <string> using namespace std; int main() { string s, t; wh...原创 2020-03-21 01:11:46 · 157 阅读 · 0 评论 -
习题3-5 UVa227-Puzzle
本题本身的难度并不大,只要转换一下思维,将不同位置的格子移动想象成为只有空白格子在不断移动即可。本题复杂的地方在于输入输出的格式以及数组可能会越界的问题。(一定要仔细检查!debug三天才发现!!血的教训!!) 输入的格式要注意不能使用cin或者scanf,它们在遇到空格的时候会停止读入,导致空格后的字符无法写入数组,最终造成结果错误。我在代码中使用的是gets()函数。 输出时候要注意两个地方...原创 2020-03-20 17:17:48 · 144 阅读 · 0 评论 -
习题3-10 UVa1587-Box
本题的目的是判断输入的数据能否组成一个长方体,我的思路可以归纳为两点: 由于长方体相对的面完全相同,所以首先判断输入的六个面是否可以分成两两相等的三组。 如果满足第一步的条件,那么只需要将每组中的一个数据拿出来进行判断。由于长方体中相邻的三个面中,每两个面之间都有一边长度相等,因此直接枚举出各种情况进行判断,符合即为长方体。 由于题目中并未给出停止输入的条件,因此我的第一次提交写成了死...原创 2020-03-20 12:44:24 · 153 阅读 · 0 评论 -
习题3-7 UVa1368-DNA Consensus String
重点是想到如何使Hamming距离最小——分别检索每一列,取出各列出现频率最高的字母即可。 代码如下:#include <iostream> using namespace std; char s[55][110]; char maxs[110]; char maxs_4(int a, int b, int c, int d) { if (a >= b && a...原创 2020-03-19 10:46:09 · 166 阅读 · 0 评论 -
习题3-6 UVa232-Crossword Answer
这道题WA了很多次,甚至在WA专栏里放了一个月。今天试着用了下uDebug,终于找到错误,改正了之后AC了!原来的代码没有考虑到第一行存在“*”的情况。uDebug太好用了!! 题目链接[UVa 232](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=168) AC代码:原创 2020-03-18 23:43:18 · 312 阅读 · 0 评论 -
例题3-3 UVa401-Palindromes
输入一个字符串,判断它是否属于回文串以及镜像串。输入不包含0以及空白字符。 #include <iostream>; #include <string.h> #include <ctype.h> using namespace std; const char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 "; const ...原创 2020-03-13 19:22:37 · 161 阅读 · 0 评论
分享