算法入门经典
daijiuqian
这个作者很懒,什么都没留下…
展开
-
uva12504更新字典 updating a dictionary
主要是在处理字符串的方面上,其他的方面就比较好说了,按字典序排序主要是使用set来解决,将字符串处理,主要是使用将字符替换为空格,再使用stringstream,将字符串用空格进行分割,然后赋值给字符串。其他的可以用map的函数来解决。思路参考了https://blog.csdn.net/qq_40738840/article/details/104239625#include <bits/stdc++.h>using namespace std;void getdict(map<原创 2020-06-25 23:18:18 · 173 阅读 · 0 评论 -
uva12100打印队列 printer queue
模拟类的题目,设置三个队列,一个队列放入优先级,另一个队列存放元素的位置,表示第几个。因为优先级可以相同,必须要有位置信息。另一个存放与第一个队列相同,用途主要用来遍历,查看是否有优先级大于当前元素的元素。#include <bits/stdc++.h>using namespace std;int main(){ int num; cin >> num; while(num--) { int n; cin原创 2020-06-25 20:13:42 · 246 阅读 · 0 评论 -
uva1595对称轴symmetry
这个题虽然算法入门经典上要求使用stl,但是我觉得使用map不是很好用,参考了别人的代码,决定使用vector,主要用了结构体,vector,sort,以及自定义了cmp比较函数,思路主要是用两个vector,一个递增,一个递减,这样大的和小的相加一定是对称线的两倍,还有就是不要使用除法,会丢小数,出错几率很大。cmp中y的比较也要注意。比较完x后,还要比较y是否相等,在一条直线上。#include <bits/stdc++.h>using namespace std;typedef s原创 2020-06-22 16:30:32 · 333 阅读 · 1 评论 -
数据库 uva1592 database
这道题我学到了很多东西,首先是udebug,使用freopen函数,将输出重定向到文件中,这样可以将输出与输入分离,debug的时候可以用来比较输出的结果,其次是map的嵌套使用,make_pair,还有就是map的使用过程中一定要保证键要不一样,值可以一样,如果无法做到就将前两个嵌套为第一个,第二个可以取一个随便一样的值。总体的思想就是类似于算法入门经典的思路一样,建立一个vector存储用逗号分割的字符串,使用count为每个字符串建立编号,使用map建立字符串与编号之间的关系,再使用map存储一行中原创 2020-06-21 16:22:09 · 209 阅读 · 0 评论 -
uva213信息解码 message decoding
主要用来锻炼写函数的能力,不看紫书解析的话难度颇大,尤其是最后的code数组不好想。#include <iostream>#include <string.h>#include <stdio.h>using namespace std;int readchar();int readint(int c);int code[8][1<<8];int readcodes();int main(){ while(readcodes())原创 2020-06-15 17:29:12 · 143 阅读 · 0 评论 -
uva133救济金发放 the dole queue
算法入门经典中的例题讲解,类似与循环队列,可以用数组来模拟,go函数我自己试着写了一下。#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int go(int p, int d, int t);int n, k, m;int a[25];int main(){ while(scanf("%d%d%d", &n, &k, &am原创 2020-06-15 15:04:05 · 144 阅读 · 0 评论 -
uva489 刽子手游戏
这题在算法入门经典中有解析,代码与书中一致,不过我改成了string,主要练习编写函数和全局变量。代码比较巧妙的地方在于,猜过一次的字母,不可以再猜一次,可以使用数组标记已经猜过的字母,但是不如书中,直接将猜过的字母修改成空格,这样更加简便。#include <iostream>#include <string.h>#include <stdio.h>#include <string>using namespace std;void guess(c原创 2020-06-09 16:52:46 · 151 阅读 · 0 评论 -
uva1339 古老密码 算法入门经典例题
本题要求查看两行是否构成映射关系,而且顺序不限,其实只需要查看两行中是否是每个字母出现的次数一致,因为顺序不限,所以需要排序,直接调用即可,可以直接用到c++的高级语法,借鉴也是很有必要的,自己琢磨其实不如看别人的简洁代码,而且还会学到一些高级的语法。vector可以直接进行比较,因为是int,所以就是比较对应的位置的值是否是相等。直接调用sort函数进行排序。本文代码参考了对应题目下的评论代码。#include <iostream>#include <algorithm>#i转载 2020-06-08 19:05:16 · 235 阅读 · 0 评论 -
uva202循环小数
此题为算法入门经典的3-8这题输入格式为第二行前面三个空格,然后进行两个换行。思路主要是通过两个数组进行模拟两者的运算过程,一个数组保存商,一个数组保存余数,自己进行手算模拟几次就可以想到,如果有循环小数的话,他的余数会与前面的余数相等,一旦出现余数相等,说明出现了循环体,就可以进行标记和break了,还有一点就是要注意,第一个例子的3.040不是无穷循环小数,在计算小数点后的4的时候,他的余数为0,和4后面的0的余数是一样的,所以要增加一个条件,就是不仅这两者的余数要相同,而且商也要一样,这样就可以了原创 2020-06-08 10:37:38 · 219 阅读 · 0 评论 -
uva227谜题puzzle
模拟类的题,虽然看着很简单,但是因为这个题描述有点模糊,而且格式很多,又涉及getchar,fgets等函数,所以 写起来很费劲,我模仿别人的代码写的还废了我一天功夫,超累。主要就是在写c数组的时候没有进行初始化的操作,所以前面的操作序列影响到了后面的操作序列数组,导致一直wa,所以说一定要养成初始化数组的好习惯啊。#include <iostream>#include <cstdio>#include <cstring>#include <algorith原创 2020-06-05 16:15:24 · 165 阅读 · 0 评论 -
uva455周期串
这题可以使用类似于环状队列来解决。把周期串想象成环形,只要用周期作为间隔旋转,那么两者的字符应该是不变的。最后是格式除最后一个外,中间是两个换行。求字符串周期问题基本这么解决应该。#include <iostream>#include <cstring>using namespace std;int main(){ char ch[100]; int n; scanf("%d", &n); while(n--) {原创 2020-06-04 11:33:46 · 148 阅读 · 0 评论 -
回文词uva401
回文串与镜像串可以在一起处理,看到题干有那么多的情况就应该想到是要用数组来解决。否则太过于麻烦。另外需要注意格式的问题,每个输出结果后面要跟两个换行。回文串和镜像串不同在于回文并不需要检查最中间的字符,但是镜像必须要检查最中间的字符,且镜像串最中间必须要放镜像和自己是一样的才可以。所以中间的字符必须要检查。#include <iostream>#include <cstrin...原创 2020-01-29 22:48:07 · 138 阅读 · 0 评论 -
uva10082
把手放在键盘上,稍不注意就会享有错一位,输入错位后的字符串,输出正确的字符串。所有字母都是大写,并且在左侧的字母不会错位。主要是用getchar将空格之类的字符接受,然后用printf输出,并且,类似于大量的if语句实现的代码可以用数组来实现。输入下标,返回结果,类似与if else的语句。#include <iostream>#include <cstdio>#i...原创 2020-01-29 21:06:25 · 231 阅读 · 0 评论 -
uva 272
题意,将文章转化为tex的格式,左双引号为··;右双引号为‘’;根据算法入门经典的代码,使用getchar函数来解决,并设置一个flag变量,来区别是左引号还是右引号,getchar的返回值为int值,要用int类型来接受返回值,在最后输出是强制类型转换为char类型输出。#include #include using namespace std;int main(){int c;i...原创 2020-01-29 18:45:35 · 177 阅读 · 0 评论 -
水仙花
算法入门经典第二版2-1水仙花#include <stdio.h>#include <stdlib.h>int main(){ for(int m = 100; m <= 999; ++m) { int i = m / 100; int j = m / 10 % 10; int k = m...原创 2019-01-14 11:10:05 · 295 阅读 · 0 评论 -
韩信点兵
算法入门经典2-2韩信点兵#include <stdio.h>#include <stdlib.h>int main(){ int a,b,c; int j = 1; while(scanf("%d %d %d", &a,&b,&c)) { int i; for(i = 10; i...原创 2019-01-14 11:52:44 · 196 阅读 · 0 评论 -
倒三角
算法入门经典2-3倒三角形#include <stdio.h>#include <stdlib.h>int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; ++i) { for(int j = 0; j < i; ++j) ...原创 2019-01-14 14:23:26 · 272 阅读 · 0 评论 -
子序列的和(subsequence)
算法入门经典2-4子序列的和#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int n; int m; double sum = 0; int j = 1; while(scanf("%d %d",&n,&m) ...原创 2019-01-14 15:17:34 · 611 阅读 · 0 评论 -
排列
算法入门经典2-6#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;string.h&amp;amp;gt;int a[10];int main(){ memset(a,0,sizeof(a)); int x,y,z; in转载 2019-01-14 18:44:00 · 110 阅读 · 0 评论 -
代码对齐 alignment of code
5-1代码参考自https://blog.csdn.net/zxiaopp/article/details/47356161#include <iostream>#include <algorithm>#include <vector>#include <string>#include <sstream>using na...转载 2019-01-24 20:24:23 · 338 阅读 · 0 评论 -
蛇行填数
#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxn 20int a[maxn][maxn];int main(){ memset(a, 0, sizeof(a)); int x, y, n, tot = 0; scanf("%d", &...转载 2019-01-15 09:20:16 · 184 阅读 · 0 评论 -
象棋
4-1此题ac但是非常的长,用了我一天半的时间,服了#include <iostream>#include <stdio.h>#include <string.h>#include <ctype.h>/*2 1 4G 10 5R 6 43 1 5H 4 5G 10 5C 7 50 0 0//车是R,马是H,炮是C,帅...原创 2019-01-21 11:39:32 · 381 阅读 · 0 评论 -
molar mass
算法入门经典分子量#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>double c[30] = {0,0,12.01,0,0,0,0,1.008,0,0,0,0,0,14.01,16.00,0,0,0,0,0,0,0,0,0,0,0,0,0...原创 2019-01-16 14:40:08 · 356 阅读 · 0 评论 -
squares
4-2正方形#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>using namespace std;int p[100][100];//记录图形int s[10];//记录长度的个数int judsquare(int x, int y, ...原创 2019-01-22 18:48:13 · 545 阅读 · 0 评论 -
cube painting
将六个面分别遍历查看是否有另一个正方体一致,分别写出上下翻转和左右翻转的方法,可以得到44的结果,然后将两个侧面未遍历的利用上下和左右的方法翻转到,然后遍历可得到24的结果,编写检验是否一致的方法,可以ac#include <iostream>#include <cstring>using namespace std;char c1[7];char c2[7];...原创 2019-01-23 15:20:18 · 262 阅读 · 0 评论 -
dna序列
算法入门经典3-7dna序列#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;char c[55][1005];char s[1005];int main(){ int a[4]; ...原创 2019-01-17 19:02:47 · 441 阅读 · 0 评论