算法学习
谁还不是个小屁孩
海边微风起,等风也等你
展开
-
Day 7_3 其他高效算法与技巧 PAT B1040/A1093有几个PAT
1.打表用空间换时间,一般将所有可能需要用到的结果实现计算出来,后面使用直接查询即可一次性计算例如斐波那契数列,B程序分几次计算,手动将结果写到程序A的数组中当程序的一部分过程消耗时间过多,或是没有想到好的算法,因此在另一个程序中使用暴力算法求出结果,例如n皇后对一些感觉不会做的题目,先用暴力程序计算出小范围的结果,然后找规律2.活用递推PAT B1040/A1093 有几个P...原创 2020-01-02 03:33:53 · 104 阅读 · 0 评论 -
Day 7_2 two pointers
编写的内容都是很简略的,适合在学过的情况下快速回忆这些算法,没有学过的话,具体了解可以百度1.two Pointers例子:给定一个递增的正整数序列和一个M,求序列中的两个不同位置的数a和b,使得他们的和恰好等于M,输出所有满足条件的方案解决方案使用二重循环枚举,但是如果序列很长时间复杂度过高void foreach(int a[],int M){ int n = sizeof(a...原创 2020-01-02 02:35:42 · 80 阅读 · 0 评论 -
Day 7_1 二分查找
1.求根号2的近似值#include<stdio.h>const double eps = 1e-5;double f(double x){ return x*x;}double calsqrt(){ double left = 1,right = 2,mid; while((right-left)>eps){ mid = (left+right)/2; ...原创 2020-01-01 18:52:30 · 258 阅读 · 0 评论 -
Day 6 贪心(PAT B1020 B1023 )
1.简单贪心考虑在当前状态下局部最优如果在想到某个似乎可行的策略,并且自己无法举出反例,那么就勇敢的实现它PAT B1020 月饼 类似背包问题#include<stdio.h>#include<algorithm>using namespace std;struct mooncake{ double store; double sell; doubl...原创 2019-12-31 01:01:59 · 168 阅读 · 0 评论 -
Day 5_3 递归
1.分治将原问题划分成若干个规模较小而结构与原问题相同或相似的子问题,求解子问题,最后合并子问题的解,得到原问题的解子问题相互独立,没有交叉的2.递归递归边界递归式(递归调用)使用递归求解n的阶乘#include<stdio.h>int Fac(int n){ if(n == 0) return 1; else return n * Fac(n-1); }i...原创 2019-12-30 20:02:50 · 317 阅读 · 2 评论 -
Day 5_2 哈希
散列定义和整数的散列换时间给定两个序列,长度分别为n,m,查询后m个数是否在前面n个数中出现过#include<stdio.h>const int maxn = 100010;bool hashTable[maxn] = {false}; int main(){ int m,n,x; scanf("%d%d",&n,&m); for(int i = 0...原创 2019-12-30 16:26:20 · 291 阅读 · 0 评论 -
Day 5_1 [ PAT A1025 ] PAT Ranking
题目:有n个考场,每个考场有若干数量的考生,现在给出各个考场中考生的准考证号与分数,要求将所有考生按分数从高到底排序,并按顺序输出所有考生的准考证号,排名,考场号以及考场内排名Input:251234001 951234002 1001234003 951234004 771234005 8541235001 651235002 251235003 1001235004 ...原创 2019-12-30 15:26:07 · 106 阅读 · 0 评论 -
Day 4_3 算法初步--排序(简单应用)
1.冒泡排序主要就是交换位置,从数组第一个数开始比较,先确定最大的数,放到数组最后,在确定第二大的数,以此类推,是从后往前排。前面文章有代码实例2.选择排序枚举,从序列中找到最小的数,与第一个元素交换,剩下n-1个就是待排序序列,继续从这n-1个中找到最小的,与第二个元素交换,剩下n-2个就是待排序序列,以此类推。...原创 2019-12-30 01:29:00 · 238 阅读 · 0 评论 -
Day 4_2 入门模拟
个人总结编写代码首先就是解决问题,利用程序得到正确解;然后规范程序代码,让代码更精炼,更符合代码逻辑,例如下面定义数组,可以宏定义一个int型数据,用来确定一个数组大小,这样子以后需要修改数组大小就只要改这个数就可以了,另外就是熟悉各个函数的使用。1.循环输入实例1#include<stdio.h>int main(){ int n; while(scanf("%d",&a...原创 2019-12-29 21:53:14 · 127 阅读 · 0 评论 -
Day 4_1 黑盒测试
1.单点测试对每组数据进行评测2.多点测试要求程序能一次运行全部数据,因此使用循环,一共有三种1.while···EOF型while(scanf("%d",&a) != EOF){}scanf函数返回其成功读入的参数个数,如果是读入字符串,还可以使用如下while(gets(str) != NULL){}或者while(scanf("%s",&str) != E...原创 2019-12-29 00:54:23 · 95 阅读 · 0 评论 -
Day 3_3 补充
1.cin读入一行数据char str[100];cin.getline(str,100);string str;getline(cin,str);2.cout控制double型数据精度添加头文件 “iomanip”double a = 3.1415926;cout<<setiosflags(ios::fixed)<<setprecision(2)<...原创 2019-12-29 00:22:23 · 172 阅读 · 0 评论 -
Day 3_2 结构体
1.结构体定义struct Name{ //一些基本数据结构或自定义的数据类型}struct studentInfo{ int id; char name[20]; studentInfo *next;}Alice,Bob,stu[1000];studentInfo是结构体名,Alice,Bob代表两个结体变量,*next是结构体指针,stu[1000]是一个结构体数组,也可...原创 2019-12-28 20:15:16 · 129 阅读 · 0 评论 -
Day 3_1 C/C++ 指针
1.指针与数组利用数组名也是数组的首地址特性,使用指针访问数组,,同样达到遍历数组的目的#include<stdio.h>int main(){ int a[10] = {1,2,3,4,5,6,7,8,9,10}; for(int *p = a;p< a+10;p++) printf("%d ",*p); printf("\n"); for(int i = 0...原创 2019-12-28 19:50:18 · 150 阅读 · 0 评论 -
Day 2 数组赋值和字符数组操作
数组数组较大,则需定义在主函数外,否则会使程序异常退出。因为函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大;另外,若要给数组的每一个元素赋0,只要给第一个元素赋0,后面的默认给0,如果没有赋值,每个元素都会是随机值。1.memset–对数组的每一个元素赋相同的值memset(数组名,值,sizeof(数组名));使用时要在程...原创 2019-12-24 00:35:21 · 410 阅读 · 0 评论 -
Day 1 C/C++复习
Day 1 C/C++复习1.整型shortintlong long整型int:32位,4字节,在-231~231-1之间,记住绝对值在10^9范围内的整数都可以定义为int型;长整型long:64位,8字节,-263~263-1之间,1010-1018之内的数都可以定义为long型,一般在初值后加 LL;2.浮点型单精度float32bit,1bit作为符号位,8bit作为指...原创 2019-12-23 22:24:08 · 469 阅读 · 0 评论 -
算法能力测试平台
1.算法在线评测系统1.PAT甲级,乙级真题题库2.codeup3.杭电4.牛客原创 2019-12-23 20:41:31 · 75891 阅读 · 0 评论 -
杂乱整理
One day 回顾C++语法(杂乱的)1.输出格式 int s = 10; printf("%d\n",s); int a,b; scanf("%d%d",&a,&b); printf("%d",a+b);2.字符串操作 char str1[20]; char str2[5][20]; gets(str1); //输入字符串 for(int i ...原创 2019-12-23 09:17:43 · 271 阅读 · 0 评论