![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
anmss
Sauerkraut fish
展开
-
PTA-1022-模拟&哈希表
Digital Library解答:#include<iostream>#include<unordered_map>#include<set>using namespace std;unordered_map<string,set<string>> Map[6];//定义5个哈希表(只用1-5号),用来表示5个特性对id的映射int main(){ int N; cin>>N; getchar(原创 2021-05-28 21:49:56 · 91 阅读 · 0 评论 -
PTA-1021-Deepest Root
Deepest Root思路:1.进行一次dfs,统计有多少连通区域,如果n个点只有1个连通区域,就是树,如果多于1个连通区域,即证明不是树2.如果是树,采用类似高中化学找碳链最长子链的方法:①第一次dfs2,以任意一个结点(random),开始dfs找到最大深度终点1 2②第二次dfs2,以找到的最深终点(1 2)为起点,进行dfs,找到最大深度(到3 4)解答:#include<iostream>#include<vector>#include<set原创 2021-05-27 16:05:54 · 176 阅读 · 0 评论 -
PAT-1020-Tree Traversals
Tree Traversals解答:前序遍历递归会自动给根节点的左右根节点赋值,当用map来保存数据,map会自动按index从小到大排序,结束后只需遍历输出map即可得到前序遍历结果下面是萌神柳婼的解法:如何做到一个i既在中序中用又在后序中用???因为由后序遍历图解可知,i序号前面的为左子树,i序号后面的为右子树!!!#include <cstdio>#include <vector>#include <map>using namespace std原创 2021-05-25 23:02:26 · 70 阅读 · 0 评论 -
PTA-1019--General Palindromic Number(回文数判断)
General Palindromic Number判断进制转化后的数字是否回文数解答:#include<iostream>using namespace std;long N,b;int a[1000];int len=0;bool check(){ for(int i=0,l=len/2;i<l;i++){ if(a[i]!=a[len-i-1]) return false; } return true;}int main()原创 2021-05-25 20:07:25 · 122 阅读 · 0 评论 -
PTA-1008 Public Bike Management
Public Bike Management本题为深度优先搜索,通过维护多个最优解最后得到结果解答:#include<iostream>#include<vector>using namespace std;int Cmax,N,Sp,M;int bike[501],dis[501][501],mindis_to[501];//存放每个station有多少自行车vector<int>v[501];//采用邻接表来存放数据vector<int>原创 2021-05-25 19:24:28 · 68 阅读 · 0 评论 -
PTA-1017
Queueing at Bank解答:总结队列操作:①送客 先将当前时间该出队的人出队,如果没有需要出队的人就跳过当前操作②入队 送客过后需要判断是否存在空余窗口,如果有就入队③迎客 入队过后就直接迎客(因为本题中黄线内人数不限,即窗口前有一个人就处理一个人,与1014中黄线内人数有限对比),所以直接对入队后的人设定离开时间即可PS:因为本题中黄线内人数不限,所以不需要一个队列数组来储存黄线内人数,只需要一个数组(窗口个数大小)来储存窗口当前正在处理人的序号即可#include<iost原创 2021-05-25 11:27:48 · 90 阅读 · 0 评论 -
PTA-1016(哈希表,排序)
Phone Bills解答:#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>using namespace std;struct record { int dd, hh, mm, t; string tag;};double danjia[24];int N;map<string,原创 2021-05-22 19:25:51 · 125 阅读 · 0 评论 -
PTA-1015
PTA-1015A reversible prime in any number system is a prime whose “reverse” in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.Now given any two positive integers N (<原创 2021-05-22 15:09:06 · 51 阅读 · 0 评论 -
PTA-1014
Waiting in LineSuppose a bank has N windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. The rules for the customers to wait in line are:The space inside the yellow line in front of each原创 2021-05-22 10:33:33 · 78 阅读 · 0 评论 -
结构体浅拷贝
结构体浅拷贝#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;struct Student { int id;}students[200];int main() { struct Student s1 = students[0]; s1.id = 10; cout << students[0].id; system("pause"); return 0;}..原创 2021-05-19 15:17:22 · 41 阅读 · 0 评论 -
PTA-1012
The Best RankTo evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or Linear Algrbra), and E - English. At the mean time, we encourage stude原创 2021-05-19 14:54:20 · 58 阅读 · 0 评论 -
PTA-1011(水)
World Cup Betting对于要求小数点位数的问题还是乖乖用printf吧…解答:#include <iostream>using namespace std;int main() { double Max = -1, a, res = 0.65; int temp = -1; char book[3] = { 'W','T','L' }; for (int i = 0; i < 3; i++) { for (int j =原创 2021-05-17 09:48:45 · 52 阅读 · 0 评论 -
PTA-1010(SSS)
Radix判断两个数是否相等,输入四个数N1,N2,tag,radix。如果tag = 1,代表N1为radix进制,寻找使N1=N2成立的进制数。如果tag = 2,代表N2为radix进制,寻找使N1=N2成立的进制数。解答:进制转化+二分+数据溢出#include <iostream>#include <cmath>#include <string>#include <cstdio>#include <algorithm>u原创 2021-05-16 17:03:21 · 131 阅读 · 0 评论 -
PTA-1009
Product of Polynomials这是一道多项式相乘的题目解答:#include<iostream>using namespace std;int main() { int n1, n2, a; double b; double ans[1001] = { 0.0 }, bns[2001] = { 0.0 }; scanf("%d",&n1); for (int i = 0; i < n1; i++) {原创 2021-05-16 15:19:34 · 73 阅读 · 0 评论 -
PTA-1008
Elevator1.第一个数字是有多少个换楼层指令,后面是换楼层指令2.能不贮存数据就不储存解答:#include <iostream>using namespace std;int main() { int n,cur=0,time=0,temp=0; cin>>n; for(int i=0;i<n;i++){ cin>>temp; if(temp>cur) time+=(temp-cur原创 2021-05-15 23:04:20 · 65 阅读 · 0 评论 -
PTA(1007)-Maximum Subsequence Sum
Maximum Subsequence Sum本题考察动态规划(有双指针内味儿)解答:1.当temp<0的时候不需要更新,因为为0时不会影响sum值,所以不需要更新tempindex2.注意范围操作:保存小于0的下标,当由小于0进入大于0时,将这个下标赋值给rindex#include<iostream>using namespace std;#include<vector>int main() { int n; cin>>n;原创 2021-05-15 22:11:21 · 141 阅读 · 0 评论 -
PTA-1006
Sign In and Sign Out解答:1.INT_MAX,INT_MIN(int范围内的最大最小值)的头文件是2.注意时间的读入及比较先后的处理方式#include <iostream>#include <climits>using namespace std;int main(){ int n,fin=INT_MAX,lout=INT_MIN; string IDIN,IDOUT; cin>>n; for(int原创 2021-05-15 16:28:35 · 87 阅读 · 0 评论 -
PTA-1005
Spell It Right本题即要求将数字逐位相加并逐位输出数字英文1.用to_string的解答:直接用to_string将一串数字直接转化成字符串#include <iostream>using namespace std;int main() { string a; int sum=0;//sum必须要初始化!!! cin >> a; for(int i=0;i<a.length();i++) sum+=(a原创 2021-05-15 15:31:58 · 79 阅读 · 0 评论 -
PTA-1004
Counting Leaves第一行的意思是一共有两个节点,1个非根节点第一行以后的行,第一个数都是第几个结点,第二个是这个结点有几个子节点,第二个后面的数就都是这个结点的子节点的序号例如v[1]就是存放1号结点的子节点序号,v[2]就是存放2号结点的子节点序号,所以递归时传进dfs的是v[node,depth+1]DFS解答:#include <iostream>#include <vector>#include <algorithm>using na原创 2021-05-15 14:12:33 · 138 阅读 · 0 评论 -
PTA(3)--Emergency
PTA(3)–Emergency解答:1.深度优先搜索的尝试解答:深度优先搜索适用于单纯搜索最短距离,因其采用递归实现搜索的特性,如果要在递归中做一些步骤记录就较为困难,如本题中要记录路线中可叫上帮忙的救援队数量并取其最大值就难以实现。#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;int m, n, c1, c2;int e[501][501];int Min = 99999999原创 2021-05-13 15:45:46 · 149 阅读 · 0 评论 -
Floyd-warshall算法(多源最短路径)
Floyd-warshall算法(多源最短路径)这种算法通常用于求一个点到其余多个点的最短距离下面的代码是求1这个顶点到其余5个顶点的最短距离:#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;int main() { int m, n, e[10][10]; int inf = 999999999; int dis[10]; cin >> m >> n; f原创 2021-05-12 16:44:15 · 144 阅读 · 0 评论 -
啊哈!算法之图的遍历
图的遍历深度优先搜索#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;int book[101], sum, n, e[101][101];void dfs(int cur);int main() { int m , a, b; cin >> m >> n; //读入一个n*n的无向图 //初始化对角线 for (int i = 1; i <= n;原创 2021-05-11 21:03:51 · 60 阅读 · 0 评论 -
PTA(1001)-17
PTA(1001)-17解答:我的思路是将这个数逐位分离放到stack容器(栈)中,再利用先进后出的特性进行打印,注意打印时将前面的几位特殊处理(如99,123,234特殊处理前面的99两个数字)#include<iostream>#include<stack>using namespace std;#define ll long longint main() { ll a, b; cin >> a >> b; ll s原创 2021-05-09 17:09:29 · 49 阅读 · 0 评论 -
快速排序优化
快速排序优化普通快速排序常规的快速排序是采用两个哨兵i,j来分别从左右找到的更换值,一直找到i,j两个哨兵相遇(i=j)在一个while循环中用两个while分别来找更换值#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;int a[101];void quicksort(int l, int r) { if (l > r) return; int i = l; int j =原创 2021-05-03 19:35:33 · 63 阅读 · 0 评论 -
用异常处理错误信息--继承在异常中的应用
用异常处理错误信息–继承在异常中的应用思路:定义一个异常基类,定义两个派生出来的两个异常类,然后在发生异常时抛回一个异常类的对象,再在catch中用父类对象引用来接,再用父类引用对象调用异常类中what函数(此处发生了多态)代码:#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class BaseMyException {public: virtual void what() = 0;原创 2021-04-12 22:24:53 · 78 阅读 · 0 评论 -
通过函数指针实现简单的C语言多态
通过函数指针实现简单的C语言多态代码如下:下面定义了一个函数指针类型NBA,再将用类型在结构体中定义一个指针变量,并传进Play函数中(Play函数实现了将main函数与全局中重复度较大的多个函数的分离,即解耦合)#define _CRT_SECURE_NO_WARNINGS#include "stdio.h"#include "string.h"#include "stdlib.h"typedef void(NBA)(void);typedef struct NBAstart { ch原创 2021-04-10 18:55:09 · 176 阅读 · 0 评论 -
创建数组指针与函数指针
创建数组指针与函数指针一.数组指针方法1:先定义一个数组类型,再用这个数组类型来创建一个数组指针#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;typedef int(Array)[10];int main() { int A[10] = { 0 }; Array* tp = &A;//这是对数组取地址,tp是整个数组地址,步长为整个数组 for (int i = 0; i原创 2021-04-10 14:03:25 · 1074 阅读 · 0 评论 -
vptr指针分部初始化
vptr指针分部初始化vptr指针在初始化时会分部初始化测试代码vptr指针分部初始化)vptr指针在初始化时会分部初始化即父类的指针指向子类时,对子类进行构造时,会先构造父类,vptr指针会先指向父类虚函数表,再指向子类虚函数表测试代码Child类继承了Parent类,我们在main类中定义了一个Child类的对象,构造Child是会先调用Parent的构造函数,我们在Parent类和Child都写了虚函数print()函数,然后在Parent类的构造函数中,调用了print()函数,通过看结果原创 2021-04-09 00:21:49 · 123 阅读 · 0 评论 -
自己写出智能指针的源码
自己写出智能指针的源码注意此处只是针对一个类写了智能指针,注意事项都已注释在代码中#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Test {public: Test(int a) { this->a = a; } void print() { cout << "a=" << a << endl; }private:原创 2021-04-06 22:48:59 · 101 阅读 · 0 评论 -
C++操作符重载实现合集
C++操作符重载实现合集C++操作符重载实现合集C++操作符重载实现合集本文包括+=,-=,前++,后++,前--,后--,左移<<,右移>>等操作符的代码实现① +=操作符重载,实现代码如下:② -=操作符重载,实现代码如下:③ 前++操作符的重载,实现代码如下:④ 后++操作符的重载,实现代码如下:⑤前--操作符的重载,实现代码如下:⑥后--操作符的重载,实现代码如下:⑦左移<<操作符的重载,实现代码如下:⑧右移>>操作符的重载,实现代码如下:本文包括原创 2021-04-05 21:37:09 · 350 阅读 · 2 评论