算法笔记
成渝丶
这个作者很懒,什么都没留下…
展开
-
散列表基础用法
题目:给出N个正整数,再给出M个正整数,问这M个数中的每个数分别是否在N个数中出现过,其中N,M<=100000#include <cstdio>const in max = 100000bool HashTable[max] = {false};int main(){ int n,m,x; scanf("%d %d",&n,&m); for(int i = 0; i< n;i++) { scanf("%d ",&x); HashT原创 2021-03-02 11:16:08 · 92 阅读 · 0 评论 -
回文串
读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。bool judge(char a[]){ for (int i = 0; i < strlen(a) / 2; i++) { if (a[i] != a[strlen(a) - i - 1])return false; } return true;}原理就是两个哨兵各自从前后出发,一一对应,全部正确就返回true,否则返回falsePAT 1009 说反原创 2021-03-01 16:24:13 · 662 阅读 · 0 评论 -
set总结
set翻译为集合,是一个内部自动有序且不含重复元素的容器如需使用需要添加头文件#include<set>using namespace std;1.set的定义set<typename>name实例如:set<int>name;set<double>name;set<char>name;set<node>name;//node是结构体类型set<int>a[100];//数组类型2.set容器内元原创 2021-03-01 16:21:18 · 2788 阅读 · 0 评论 -
vector总结
vector首先需要添加头文件#include<vector>using namespace std;定义vector的方法 vector<typename>name; 例子为:vector<int>name;vector<double>name;vector<char>name;vector<node>name;如果typename里面是vector 就为vector<vector<i原创 2021-03-01 15:52:42 · 76 阅读 · 0 评论 -
PAT B1009说反话
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Come输出样例:Come I Here World Hello#include <iostream>原创 2021-02-28 15:52:19 · 116 阅读 · 0 评论 -
进制转换记录,PAT B1022 D进制的A+B
1.将p进制x转换为十进制数y循环处理:其中的x是为p进制的数字,如二进制10001之类的,product我暂时理解为权重,y为最终十进制结果;while的每一轮取出x的最后一位数字乘上权重,然后加到y上,然后x自除10,product权重增加,这样下一轮x%10又可以取到x当前的最后一位;int y = 0,product = 1;while(x != 0){ y = y + (x % 10) * product; x /= 10; product = product * P;}—原创 2021-02-28 15:11:54 · 96 阅读 · 0 评论 -
问题 A: A+B 输入输出练习I
题目描述你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。输入输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。输出对于输入的每对a和b,你需要依次输出a、b的和。如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。样例输入 Copy1 510 20样例输出 Copy630代码:#include <iostream>using namespace std;#incl原创 2021-02-23 18:29:43 · 1123 阅读 · 0 评论 -
问题 C: C语言11.4
题目描述设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:struct {int num;char name[10];char sex;char job;union {int class;char position[10];}category;};在以上的结构体中,如果job项原创 2021-02-23 17:05:54 · 113 阅读 · 0 评论 -
问题 A: C语言11.1
题目描述完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:struct person {char name[20];int count;}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};输入第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。以后的n行中,每一行包含一个人名,原创 2021-02-23 14:37:08 · 65 阅读 · 0 评论 -
问题 E: C语言10.16
题目描述输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。输入用空格隔开的10个整数。输出输出进行题目描述操作之后的10个整数,每个整数之后输出一个空格。请注意行尾输出换行。样例输入 Copy1 5 2 4 9 0 3 8 7 6样例输出 Copy0 5 2 4 6 1 3 8 7 9代码:#include <iostream>using namespac原创 2021-02-22 12:06:37 · 66 阅读 · 0 评论 -
问题 D: C语言10.15
题目描述输入3个字符串,按从小到大的顺序输出。要求使用指针的方法进行处理。输入3行,每行一个用字符串。保证每个字符串的长度不超过20。输出按从小到大的顺序输出这3个字符串,每个字符串一行。请注意行尾输出换行。样例输入 CopyChinaCLOCKdeal样例输出 CopyCLOCKChinadeal代码:#include <iostream>using namespace std;#include<string.h>void swap(char原创 2021-02-22 11:32:18 · 278 阅读 · 1 评论 -
问题 I: 例题6-4 矩阵转置
题目描述:将一个2行3列的矩阵(二维数组)行列互换,存储到另一个3行2列的矩阵中。要求以整型数据为例来解答。输入:输入2行数据,每行3个整数,以空格分隔。输出:行列互换后的矩阵,3行,每行2个数据,以空格分隔。样例输入 Copy1 2 34 5 6样例输出 Copy1 42 53 6思路:首先要进行输入,两个for循环嵌套,按行输入即可;观察后,可以得出按列输出 先是1,4,2,5,3,6,每打印一行换行即可int main(){ int a[10][10]; for原创 2021-02-21 22:00:57 · 322 阅读 · 0 评论 -
问题 D: 习题6-12 解密
题目:有一行电文,已按如下规律译成密码:A–>Z a–>zB–>Y b–>yC–>X c–>x… …即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。输入输入一行密文输出解密后的原文,单独占一行。样例输入ZYX123zyx样例输出ABC123abc思路:首先第一个联想到的是字符串问题,每个字符肯定是利用ASCII码来原创 2021-02-21 21:19:57 · 235 阅读 · 1 评论 -
冒泡排序
冒泡排序:#include <iostream>using namespace std;int main(){ int a[10] = { 3,1,4,5,2 }; for (int i = 1; i <= 4; i++)//整个过程执行n-1趟,五个数字排序即四趟 { for (int j = 0; j < 5 - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j]原创 2021-02-21 17:29:44 · 53 阅读 · 0 评论 -
习题5-10 分数序列求和
题目:有如下分数序列求出次数列的前20项之和。请将结果的数据类型定义为double类型。输入:无输出:小数点后保留6位小数,末尾输出换行。思路:拿到题首先先观察,上一个的分子分母相加为第二个的分子,并且上一个的分子为下一个的分母;那么大概的思路就定下来了,不妨设变量a为分子,变量b为分母来进行操作double a = 2,b =1,sum = 0,temp = 0;for(int i = 1; i<= 20;i++){ sum += (a/b);//首先先让sum加上第一原创 2021-02-21 13:26:37 · 542 阅读 · 0 评论 -
问题 F: 例题5-6 矩阵输出
题目:输出以下4*5的矩阵1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20要求使用循环实现,注意每行输出5个数字,每个数字占3个字符的宽度,右对齐。思路:利用两个循环来实现,外层循环用来输出行,内层循环用来输出列,关键在于如何找出每行数字的规律,以及要注意题目的要求(每个数字占3个字符的宽度)提供两种解题方法:方法1:for(int i = 1; i < 6;i++){for(int j = 1; j < 6;j+原创 2021-02-21 12:35:24 · 448 阅读 · 0 评论