算法笔记学习记录
2019.06.26
-
float&&double
推荐全部使用double,注意区分scanf("%lf",&double1);
与printf("%f",double1);
分清%md
,%0md
,%.md
以及可以合用%n.md
-
getchar()&&putchar()
getchar可以识别换行符\n
看完 2.4 跟着coding
page39**
2019.06.27
-
BubbleSort
#include <stdio.h> void BubbleSort(int a[],int n){ int i,j; for(i=n-1;i>=0;i--){ //每次排序的长度(第一个到第i个) int flag=0;//加入标志 for(j=0;j<i;j++){ if(a[j]>a[j+1]) swap(&a[j],&a[j+1]); flag=1; } if(!flag) break; } } int main(){ int a[10]; for (int i=0;i<10;i++){ scanf("%d",&a[i]); } int n=sizeof(a)/sizeof(int); BubbleSort(a,n); for(int i=0;i<n;i++){ printf("%d\n",a[i]); } return 0; }
-
memset
需添加<string.h>
头文件memset(a,值,sizeof(a)); //值只能用0,-1;按位赋值;
-
sscanf&sprintf
-
void change(int a[],int b[][5]); //传参数二维数组需要写大小,且数组是传地址,修改即是对原数组的修改。
-
字符串的swap
void swap(char *a,char *b){ char temp[20]; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); } int main(){ char str1[20],str2[20],str3[20]; gets(str1); gets(str2); gets(str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf("%s\n%s\n%s\n",str1,str2,str3); return 0; }
-
构造函数初始化结构体
struct studentInfo{ int id; char gender; char name[20]; studentInfo *next; studentInfo(){} studentInfo(char _gender){gender=_gender;} studentInfo(int _id,char _gender){id=_id;gender=_gender;} studentInfo(const char* a){strcpy(name,a);}//注意const }Alice; studentInfo Bob =studentInfo("Bob Jobs");
-
const double Pi=acos(-1.0);
定义Pi;
第2章还差最后一节黑盒测试。明天看完开始第三章。
2019.06.28
- 各种测试读取方法;再出现问题就总结;
//while(scanf("%d",&n)!=EOF){}
//while(scanf("%s",str)!=EOF){}
//while(gets(str)!=NULL){}
//if(!n) break;
-
今日AC
1046 case3超时 修改思路一边读取一边统计路径。减少遍历次数
1001错误一个,记得考虑特殊情况0;
1002错误一个,注意判断浮点数的时候,用差的绝对值比较呀fabs(coeff[i]-0.0)>10e-5
漏掉了一个fabs导致一个用例一直错误。
1005①错误一个,记得考虑0;②PAT编译器不支持gets
,整行读取使用c++的cin.getline(str,len)
,加上#include<iostream> using namespace std;
The function
std::gets()
was deprecated in C++11 and removed completely from C++14.1008读题认真。
while(scanf("%d,&n)!=EOF)
编译器端失灵,可能和没法手动Ctrl+Z有关。学到一个新方法
do{……}while((c=getchar())!='\n')
-
看了第三章第一节开始做PAT网站上的题,书要放慢速度啃了。争取每天AC5题,多的时间过书和书后的习题。
2019.06.29
-
今日AC
1006 EZ.
1007全是坑,自己思路没错但是输出格式错误。注意各种0的情况。动态规划方法
1009正常做。注意输出格式。在不溢出的情况下,申请数组可以尽量大些,基本也不影响超时。
1011EZ.
2019.06.30
-
今日AC
1012学习使用C++的sort
,算法笔记P235,sort(a,a+N,cmp);
1015测试用例2折腾半天,质数的判断,最好还是吧0,1,2单独列出来返回结果。0,1不是质数(也不是合数,2是质数)质数英文prime number。
1019EZ.注意特殊情况0即可。 -
未完成:
1016Phone bills,太复杂了,读懂意思到写出完整代码花了一个多小时,然后样例过了测试全错,找不到格式错误,逻辑似乎也没有问题,自己编的例子看起来也都跑通了,有时间再看看别人ac的代码吧,或者学了别的数据结构重写。【20190718已AC】1020二叉树看了开头,明天继续,【20190701已AC】
20190701
-
AC:
1020二叉树,基础题,跟着算法笔记复习了一遍前中后层次四种遍历,以及利用前中、中后遍历数据构建二叉树的算法。代码全部贴进去了。代码
1094EZ.再做可以用树试试;
1079EZ.数组大小波动大时用vector -
未完成:
1056 复习到队列再试试【20190702已AC】