算法笔记
小郭今天学习了吗?
这个作者很懒,什么都没留下…
展开
-
第四章-散列
散列(hash)将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素。这个转换函数称为散列函数H,如果元素在转换前为key,那么转换后就是一个整数H(key)key为整数时(1)直接定址法(重要)H(key)=key或者H(key)=a*key+b直接把key作为下标或者线性变换问题:给出N个整数,再给出M个整数,问这M个数中的每个数分别是否在N个数中出现过,其中N,M<=105.空间换时间。设定bool类型数组hashTable[100010],初始化为false(正整原创 2021-01-24 12:32:48 · 131 阅读 · 0 评论 -
第六章-sort(C++)
如何使用sort排序sort函数的使用必须加上头文件“#include”和“using namespace std;"使用方法:sort(首元素地址,尾元素地址的下一个地址,比较函数)三个参数前两个必须填,比较函数根据需要填写。不写比较函数,默认对前面给出的区间进行递增排序。#include<stdio.h>#include<algorithm>using namespace std;int main(){ int arr[6]={9,4,2,5,6,-1}; /原创 2021-01-22 11:07:35 · 62 阅读 · 0 评论 -
第四章排序笔记
排序排序笔记内部排序(数据对象只在内存里进行排序)外部排序(数对象过多不能同时放入内存,需要借助外存进行排序)此处只总结内部排序:选择排序:简单选择排序:对一个序列A中的元素A[1]~A[n],令i从1到n枚举,进行n趟操作,每趟从待排序部分[i,n]中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换,这样元素A[i]就会与当前有序区间[1,i]。n趟操作后,所有元素就会是有序的。算法逻辑明显:共进行n趟操作,每趟操作选出待排序部分[i,n]中最小的元素,令其与A[i]交换。因此原创 2021-01-22 09:57:57 · 79 阅读 · 0 评论 -
第三章-字符串处理5901
回文串题目描述:读入一串字符,判断是否是“回文串”。回文串是一个正读和反读都一样的字符串。输入格式:一行字符串,长度不超过255输出格式:如果是“回文串”,输出“YES”,否则输出“NO”样例输入:12321样例输出:YES#include<stdio.h>#include<string.h>const int maxn=256;bool judge(char str[]){ int len=strlen(str); for(int i=0;i<原创 2021-01-16 12:31:17 · 93 阅读 · 0 评论 -
第三章-进制转换
进制转换:P进制转换为Q进制的步骤(1)P进制先转换为十进制数y对于一个十进制数y=d1d2d3…dn,它可以写成这个形式:y=d110(n-1)+d210(n-2)+…+dn如果p进制数x=a1a2a3…an,那么它写成下面这个形式之后使用十进制的加法和乘法,就可以转换为十进制数y:y=a1p(n-1)+a2p(n-2)+…+anint y=0,product=1;while(x!=0){ y=y+(x%10)*product; x=x/10; product=product*p;}原创 2021-01-16 12:19:14 · 333 阅读 · 0 评论 -
第三章-图形输出B1036
跟奥巴马一起编程输入:在一行中给出正方形边长N(3<=N>=20)和组成正方形边的某种字符C,间隔一个空格。输出:由给定字符C画出的正方形。但是注意到行间距比列边距大,所以为了让结果看上去更像正方形,所输出的行数实际上是列数的50%(四舍五入取整)。样例输入10 a样例输出:aaaaaaaaaaa aa aa aaaaaaaaaaa#include<stdio.h>int main(){ int row,col;原创 2021-01-15 10:30:50 · 209 阅读 · 0 评论 -
第三章-查找元素
题目描述:输入一个数n(1<=n>=200),然后输入n个数值各不相同的数,在输入一个值x,输出这个值在这个数组中的下标(从0开始,若不再数组中则输出-1)。输入样例:41 2 3 43样例输出:2#include<stdio.h>const int maxn=210;int a[maxn];int main(){ int n; int x; scanf("%d\n",&n); for(int i=0;i<n;i++){ scanf("原创 2021-01-14 17:34:03 · 73 阅读 · 0 评论 -
第三章-简单模拟B1032
挖掘机技术哪家强题目描述:为了用事实说明挖掘机技术哪家强,PAT组织了一场挖掘机技能大赛。请根据比赛结果统计出技术最强的那个学校。输入格式:在第一行给出不超过10的5次的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)及其比赛成绩(百分制),中间以空格分隔。输出格式:在第一行中给出总得分最高的学校的编号及其总分,中间以空格分隔。题目保证答案唯一,没有并列。输入样例:63 652 801 1002 703 403 0输出原创 2021-01-14 16:49:27 · 107 阅读 · 0 评论 -
第三章-简单模拟B1001
简单模拟:题目怎么说,你就怎么做题目描述:卡拉兹猜想对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样反复砍下去,最后一定在某一步得到n=1.此处并非要证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单的数一下,需要多少步才能得到n=1?输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。输出格式:输出从n计算到1需要的步数输入样例:3输出样例:5#include<stdio.h>int main()原创 2021-01-14 11:59:02 · 88 阅读 · 0 评论 -
第二章-黑盒测试
黑盒测试是指:系统后台会准备若干组输入数据,然后让提交的程序去运行这些数据,如果输出的结果与正确答案完全相同(字符串意义上的比较),那么就称通过了这道题的黑盒测试,否则会根据错误类型而返回不同的结果。其中根据黑盒测试是否对每组测试数据都单独测试或是一次性测试所有测试数据,又可以分为单点测试和多点测试。单点测试对单点测试来说,系统会判断每组数据的输出结果是否正确。后台会多次运行代码来测试不同的数据。#include<stdio.h>int main(){ int a,b; scanf(原创 2021-01-14 11:40:34 · 336 阅读 · 0 评论 -
第二章-补充
cin与coutC++中的输入输出函数,需要添加头文件“#include”和“using namespace std"才能使用。可以直接进行输入/输出。1、cin采用输入运算符”>>"进行输入。#include<iosteam>using namespace std;int main(){ int n; cin>>n; //输入一个整数n return 0;}如果同时读入多个变量也是一样的写法,只需要后面使用>>进行拓展即可。例如下原创 2021-01-14 10:32:21 · 104 阅读 · 0 评论 -
第二章-结构体
结构体可以将若干不同的数据类型的变量或数组封装在一起,以存储自定义的数据结构,方便储存一些复合数据。结构体定义定义一个结构体的基本格式:struct Name{ //一些基本的数据结构或者自定义的数据类型 };当需要将一些相关的变量放在一起存储时,只要依次写出它们的数据类型和变量名称。例如:需要存储一个学生的学号、性别、姓名和专业,就可以这样定义:struct studentInfo{ //stdentInfo是结构体的名字 int id; char gender; char n原创 2021-01-13 17:56:14 · 75 阅读 · 0 评论 -
第二章-指针
什么是指针在计算机中,每个变量都会在内存中分配一个空间,每种类型得变量所占得空间不同,(例如int型变量占用4个字节,而long long型变量占用8个字节),计算机中每个字节都会有一个地址,即变量存放的位置,而计算机就是通过地址找到某个变量的。变量的地址一般指它占用的字节中第一个字节的地址。计算机上一个地址指向一个变量,可以通过地址来找到变量。C语言中用“指针”来表示内存地址(或者称指针指向内存地址),如果这个内存地址恰好是某个变量的地址,那么称这个指针指向该变量。在变量前面加上&,就表示原创 2021-01-13 16:34:53 · 175 阅读 · 0 评论 -
第二章基础知识
第二章2.4 循环结构while语句计算机求解1+2+3+4…+100?#include<stdio.h>int main(){ int n=1; int sum=0; while(n<=100){ sum+=n; n++; } printf("%d",sum); return 0;}while条件判断的真假可以使用的技巧1、如果表达式是“!=0”,则可以省略“!=0”2、如果表达式是“==0”,则可以省略“==0”,并在表达式前面添加非运算符"!原创 2021-01-12 20:14:28 · 208 阅读 · 0 评论