数据结构
BatmannLv
这个作者很懒,什么都没留下…
展开
-
1049 数列的片段和 (20 分)(C++)
Notice:1.一开始直接写嵌套循环,发现超时。所以需要用数学方法去求解。 后参考别人博客,发现其规律: 先观察一个数,例如,对于N=4的数列中序列号为3的数所在的片段如下: (起点为1)[(1,2,3),(1,2,3,4)]; (起点为2)[(2,3),(2,3,4)]; (起点为3)[(3),(3,4)]; 可以看出来,包含第i个数的片段中,片段的起始可以是1,2,3..i,一共i种选择, (如包含3的片段有123三种选择) 片段的结尾可以是i,i+1,...n.原创 2021-12-16 14:45:13 · 972 阅读 · 0 评论 -
1044 火星数字 (20 分)(C++)
转载:https://www.liuchuo.net/Noticehash + 进制的计算#include <iostream>#include <string>using namespace std;string a[13] = {"tret","jan", "feb","mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"}; //把tre原创 2021-12-03 20:18:19 · 281 阅读 · 0 评论 -
1043 输出PATest (20 分)(C++)
NoticeHash散列#include <iostream>using namespace std;int main(){ int map[128] = {0}; string s; cin >> s; for(int i = 0;i < s.length();i++){ //每个字母的个数存入map中 map[s[i]]++; } //输出 while(map['P'] > 0 ||.原创 2021-12-03 20:10:39 · 635 阅读 · 0 评论 -
1042 字符统计 (20 分)(C++)
NoticeHash散列#include <iostream>#include <string>#include <cctype>using namespace std;int main(){ int a[40] = {0}; //保存36个小写字母的个数 string s; getline(cin,s); //字符串有空格,不能直接用cin char c; for(int i = 0;i < s.length.原创 2021-12-03 15:42:41 · 200 阅读 · 0 评论 -
1041 考试座位号 (15 分)(C++)
参考:https://www.liuchuo.net/Notice先保存再查找元素#include <iostream>#include <string>using namespace std;string a[1005][2];int main(){ string s; int n,test,k; cin >> n; for(int i = 0;i < n;i++){ //保存数据,试坐号为行下标,准考证号和考试原创 2021-12-03 12:36:50 · 876 阅读 · 0 评论 -
1040 有几个PAT (25 分)(C++)
转载:https://www.liuchuo.net/Notice1.每次扫描到A,用这个A组成的PAT刚好是A前面的P数量*A后面T的数量.2.因为整型的输出范围是0~2147483648.countp*countt有可能溢出,所以需要对成绩2取模, 每次结果的和也有可能溢出,所以需对每次结果和取模,总之取两次模的目的在于防止数据溢出。#include <iostream>using namespace std;int main(){ string s;原创 2021-12-03 12:19:41 · 98 阅读 · 0 评论 -
1039 到底买不买 (20 分)(C++)
#include <iostream>using namespace std;int main (){ int v1[256] = {0}; //摊主 int v2[256] = {0}; //小红 string s1; string s2; cin >> s1 >> s2; for(int i = 0;i < s1.length();i++) {v1[s1[i]]++;} for(int..原创 2021-12-02 22:23:29 · 100 阅读 · 0 评论 -
1038 统计同成绩学生 (20 分)(C++)
NoticeHash散列#include <iostream>using namespace std;int a[110] = {0}; //开一个Hash表,记录各个分数的人数int main (){ int n,k,score; cin >> n; for(int i = 0;i < n;i++){ cin >> score; a[score]++; } cin >&g.原创 2021-12-02 21:25:22 · 152 阅读 · 1 评论 -
1037 在霍格沃茨找零钱 (20 分)(C++)
Notice:1.不同进制的加减运算2.swap()没写头文件,但我查资料发现swap()应该在 <string_view>头文件里 http://www.cplusplus.com/reference/algorithm/#include <iostream>#include <cstdio>using namespace std;int main(){ int g1,g2,g3,s1,s2,s3,k1,k2,k3; scanf(".原创 2021-12-02 21:12:02 · 229 阅读 · 0 评论 -
1036 跟奥巴马一起编程 (15 分)(C++)
Notice:四舍五入 具体参考https://blog.csdn.net/BatmannLv/article/details/121642463?spm=1001.2014.3001.5502#include <iostream>using namespace std;int main(){ int n,row; char c; cin >> n >> c; row = ((1.0 * n / 2) + 0.5); //行数.原创 2021-12-02 20:14:52 · 150 阅读 · 0 评论 -
1035 插入与归并 (25 分)(C++)
转载自柳诺https://www.liuchuo.net/#include <iostream>#include <algorithm>using namespace std;int main(){ //输入 int a[110],b[100]; int n; cin >> n; for(int i = 0;i < n;i++){ cin >> a[i]; } fo...原创 2021-12-02 17:41:17 · 536 阅读 · 0 评论 -
1034 有理数四则运算 (20 分)(C++)
#include <iostream>#include <cstdio>#include <cmath>using namespace std;long long a,b,c,d;//求最大公约数的子函数(辗转相除法)long long gcd(long long m,long long n){ return n ? gcd(n,(m % n)) : m; //return n == 0 ? m : gcd(n,(m % n));}..原创 2021-12-02 15:44:25 · 359 阅读 · 0 评论 -
1033 旧键盘打字 (20 分)(C++)
Notice:1.测试点2:先输入s1,s2。并且由于s1可能是空字符串, 所以不能用cin >> s1 >> s2,因为cin >> s1不接收空串。 所以s1需要用getline接收(测试点2)。 2.关于cin、getline()的区别: 简单来说,在接受字符串的时候, cin 遇“空格”、“TAB”、“回车”都结束; getline()可以接收空格并输出。(需包含#in.原创 2021-12-02 10:31:07 · 323 阅读 · 0 评论 -
1032 挖掘机技术哪家强 (20 分)(C++)
#include <iostream>#include <algorithm>#include <vector>using namespace std;int main(){ int n,school,score; int maxscore = 0,maxschool = 1; cin >> n; vector<int> v(n);//用数组来保存学校的数据,下标为学校编号,值为总分。 for(i.原创 2021-12-01 21:27:13 · 283 阅读 · 0 评论 -
1031 查验身份证 (15 分)(C++)
Notice出错的点:1.char和int类型之间的转换,特别是一开始到最后做比较的时候,我把'X'转换为10, 再存入int char[],发现这样有问题。后来直接改为char code[]再和字符进行比较。我的代码#include <iostream>using namespace std;int main(){ int n,cnt = 0; //cnt为出错的个数 int w[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,..原创 2021-12-01 20:47:27 · 367 阅读 · 0 评论 -
1030 完美数列 (25 分)(C++)
two pointersNotice思路: 先对该数列从小到大进行排序(sort()),再从排序后的最小值(即a[0])开始作为m,将之后的数值依次作为M,看是否满足条件( M≤mp),若满足则记录此时的最大值cnt (cnt 为 j - i + 1;).依次记录下去,找出最大的cnt最后输出。#include <iostream>#include <algorithm>using namespace std;int main(){ long long.原创 2021-12-01 17:28:21 · 276 阅读 · 0 评论 -
1029 旧键盘 (20 分)(C++)
Notice:思路:1.找到坏的键:应该输入字符串s1,实际输入s2. 所以只需要在s2中依次寻找s1中没有的键值。2.防止重复输出坏健:利用一个Hash表去判断之前是够有输出过.思考:1.这道题属实给我写吐了。。最后测试点4死活过不了。 最后发现是判断小写字母时候忘加"="号了。 我的:if(s1[i] > 'a' && s1[i] < 'z') s1[i] -= 32; 正解:if(s1[i] >= 'a' && s1[i] <.原创 2021-12-01 16:29:08 · 694 阅读 · 2 评论 -
1028 人口普查 (20 分)(C++)
Notice:测试点3,cnt为0时候只用输出0即可。否则“格式错误,您的程序输出的格式不符合要求(比如空格和换行与要求不一致)”#include <iostream>using namespace std;int main(){ int n; int cnt = 0; string name,birth,maxname,minname,maxbirth,minbirth; cin >> n; maxbirth = "1814/0.原创 2021-12-01 11:30:35 · 289 阅读 · 0 评论 -
1027 打印沙漏 (20 分)(C++)
Notice#include <iostream>using namespace std;int main(){ int n; char c; cin >> n >> c; //判断能画多少层,单向,(中间一个*为第0层) int floor = 0; int sum = 1; while(sum <= n){ floor++; sum = sum + 2 .原创 2021-11-30 22:15:29 · 345 阅读 · 0 评论 -
1026 程序运行时间 (15 分)(C++)
Notce:C++的四舍五入: 思路:如果直接对一个浮点数取四舍五入,不保留小数部分,那么我们的思路是:正数加上0.5,负数减去0.5。#include <iostream>using namespace std;int round1(double number){ return (number>0.0)?(number+0.5):(number-0.5);}或者:#include <iostream>#include <cmath&g.原创 2021-11-30 20:55:12 · 266 阅读 · 0 评论 -
1025 反转链表 (25 分)(C++)
#include<iostream>#include<algorithm>using namespace std;int main(){ int first,n,k,adress; cin >> first >> n >> k; int list[100005],data[100005],next[100005]; //构造data[adress],next[adress]数组 for(i..转载 2021-11-30 20:32:46 · 175 阅读 · 0 评论 -
1024 科学计数法 (20 分) (C++)
#include<iostream>#include<cstdio>#include<string>#include<cmath>using namespace std;int main(){ string s; cin >> s; int pos = 0 ; while(s[pos] != 'E')pos++; //此时pos指向E那个字符 string f = s.substr(1,.原创 2021-11-30 17:18:43 · 387 阅读 · 0 评论 -
二叉排序树的判定算法
二叉排序树的判定算法转载自https://www.cnblogs.com/wulzt/p/10082132.htmlStatus IsBSTree(BSTree T)/* 判别二叉树T是否为二叉排序树。*//* 若是,则返回TRUE,否则FALSE */{ if(T==NULL) return TRUE; else{ if(T->lchil...转载 2019-10-21 22:16:40 · 358 阅读 · 2 评论 -
单链表反向输出
递归方法逆向输出单链表Void R_Print(LinkList L){ if(L->next != NULL){ R_Print(L->next); } cout<<L->data<<endl;}原创 2019-10-12 21:37:58 · 285 阅读 · 0 评论