【2021暑期训练-3】9-2 队列的实现及基本操作
给定一个初始为空的队列和一系列入队、出队操作,请编写程序输出每次出队的元素。队列的元素值均为整数。
输入格式:输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d入队,0表示出队。n不超过20000。
输出格式:按顺序输出每次出队的元素,每个元素一行。若某出队操作不合法(如在队列空时出队),则对该操作输出invalid。
输入样例:1234567871 11 20001 30
输出样例:123412invalid3
思路c++ stl 中容器queue的基本使用,注意需要使用q.empty()来判断队列是否为空
代码123456789101112131415161718192021222324#include <iostream>#include <queue>using namespace std;int main() { int n; cin >> n; queue<int> q; for (int i = 0; i < n; i++) ...
【2021暑期训练-3】9-3 括号匹配
给定仅包含“()[]{}”六种括号的字符串,请你判断该字符串中,括号的匹配是否是合法的,也就是对应括号的数量、嵌套顺序完全正确。。
输入格式:第一行一个整数T(T<=10)
其后T行每行一个字符串只包含[{()}]六种字符(字符串长度2e5以内)
输出格式:对于每个字符串,匹配输出Yes,否则输出No
输入样例:1232{()[]}([)]
输出样例:12YesNo
思路使用stack来存储符号,遇左压栈,如果为右括号判断是否与当前栈顶元素相匹配,若不匹配则为“No”,匹配则弹出当前栈顶元素(左括号),继续进行下一个括号匹配。最后为空栈则为“Yes”。
代码1234567891011121314151617181920212223242526272829303132#include <iostream>#include <stack>using namespace std;bool com(char a, char b) { if ((a == '{' && b == '}') || ...
【2021暑期训练-3】9-4 进制转换
输入十进制整数N和待转换的进制x(2、8、16),分别代表十进制N转换成二进制、八进制和十六进制,输出对应的结果。十六进制中A~F用大写字母表示。
输入格式:输入两个整数N(十进制整数N)和x(x进制),中间用空格隔开。
输出格式:输出对应的结果。
输入样例:1123 2
输出样例:11111011
输入样例:1123 16
输出样例:17B
思路利用辗转相除法进行进制转换,使用stack来存得到的结果,注意转换为16进制时,从10开始为A。
代码123456789101112131415161718192021#include <iostream>#include <stack>using namespace std;int n, x;int main() { cin >> n >> x; stack<int> s; do { s.push(n % x); n /= x; } while (n); while (!s.empty( ...
每日分享day15-字符串和数字转换函数总结
河北大学暑期程序设计训练每日知识分享-day15
每日分享——字符串和数字转换函数总结常见的输出格式转化
%% 打印出百分比符号,不转换。
%c 整数转成对应的 ASCII 字元。
%d 整数转成十进位。
%f 倍精确度数字转成浮点数。
%o 整数转成八进位。
%s 整数转成字符串。
%x 整数转成小写十六进位。
%X 整数转成大写十六进位。
%n sscanf(str,”%d%n”,&dig,&n)
%n表示一共转换了多少位的字符
c/cpp方法(数组转字符串)123itoa() 将整型值转换为字符串itoa() 将长整型值转换为字符串ultoa() 将无符号长整型值转换为字符串
当然cpp中也有常用函数atoi(),itoa(),to_string()用于他们的转换,例子如下:
12345678910#include<stdio.h>#include<stdlib.h>void main(void);void main(void){ int num = 100; char str[25]; itoa(num, ...
每日分享day14-Stack Overflow
河北大学暑期程序设计训练每日知识分享-day14
每日分享—— Stack OverflowStack Overflow http://stackoverflow.com/Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,不会弹出任何广告,销售信息,JavaScript 窗口等。
Stack Overflow 参考 Reddit (一个社交新闻网站)等网站的用户激励机制,关注问题质量,网站允许注册用户提出或回答问题,还可对已有问题或答案加分、扣分或进行修改,条件是用户达到一定的“声望值”。“声望值”就是用户进行网站交互时能获取的分数 。
其他问答网站还有知乎,掘金等,社区网站也有GitHub,SegmentFault思否,在社区,每一位开发者都可以贡献和更新技术内容,共同参与社区建设,维护社区秩序。
每日分享day13-LibreOJ
河北大学暑期程序设计训练每日知识分享-day13
每日分享—— LibreOJLibreOJ https://loj.ac/洛谷致力于为OIers/ACMers提供清爽、快捷的编程体验。它不仅仅是一个在线测题系统,更拥有强大的社区、在线学习功能。同时,许多教程内容都是由五湖四海的ers提供的,保证了内容的广泛性。无论是初学者,还是久经沙场的神犇,均可从洛谷Online Judge获益,也可以帮助他人,共同进步。
可以在洛谷上搜索题单,有针对性的对某一方面进行训练或者积累做题经验。
洛谷网站为 https://www.luogu.com.cn/
每日分享day12-Git与GitHub
河北大学暑期程序设计训练每日知识分享-day12
每日分享——Git与GitHub Git是目前世界上最先进的分布式版本控制系统。
Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。
GitHub是一个基于Git的远程文件托管平台。
Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。
(git 可能大家目前不会使用到 , 但以后一定会接触的)
学习网站:
Git 教程 | 菜鸟教程
https://www.runoob.com/
https://www.runoob.com/git/git-tutorial.html
Git - 关于版本控制
https://git-scm.com/
https://www.git-scm.com/book/zh/v2/
菜鸟教程网站也是一个学习的好地方,涉及编程语言,开发,服务器端等多个方面。
作为一名合格的程序员, ...
每日分享day11-CodeSheep书签分享
河北大学暑期程序设计训练每日知识分享-day11
每日分享——CodeSheep书签分享来自CodeSheep编程羊的浏览器收藏夹
CodeSheep,热爱技术的开发人员,经常在微信、B站等平台分享学习经历、分析技术行情。B站的ID就是CodeSheep,他的学习分享视频覆盖许多技术领域,总会有你感兴趣的。
这个浏览器收藏夹包含了很多实用小工具和图片素材网站(思维导图制作、ASCII查询、CSS在线效果等,大家以后在做课程大作业的时候很可能会用到图片素材网站)
导入到自己的浏览器书签也很容易,这里以Edge为例,其他浏览器均可,操作简便。
每日分享day10-C++中的字符串数字转换函数
河北大学暑期程序设计训练每日知识分享-day10
每日分享——C++11特性中的to_stringto_string的的头文件是#include <string>,to_string最常⽤的就是把⼀个int 型变量或者double型变量转化为 string 类型的变量,当然也可以转 double 、float 等类型的变量,这在很多PAT字符串处理的题目中很有用处,以下是示例代码
123456789101112#include <iostream>#include <string>using namespace std;int main() { string s1 = to_string(123); // 将123这个数字转换为字符串 cout << s1 << endl; string s2 = to_string(4.5); // 将4.5这个数字转换为字符串 cout << s2 << endl; cout << s1+s2 << endl ...
【2021暑期训练-2】9-9 集合相似度
给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。
输入格式:输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10^4^),是集合中元素的个数;然后跟M个[0,10^9^]区间内的整数。
之后一行给出一个正整数K(≤2000),随后K行,每行对应一对需要计算相似度的集合的编号(集合从1到N编号)。数字间以空格分隔。
输出格式:对每一对需要计算的集合,在一行中输出它们的相似度,为保留小数点后2位的百分比数字。
输入样例:123456733 99 87 1014 87 101 5 877 99 101 18 5 135 18 9921 21 3
输出样例:1250.00%33.33%
思路集合中存放的是不相等的元素个数,使用set容器,set相同值的元素只存放一次,set的大小就是对应集合的不相同元素的个数;用cnt记录两个集合都有的数字个数,然后再除以两个集合总共不同数字的个数。
这里可以 ...