算法笔记学习&&PAT甲级解题记录

算法笔记学习记录

2019.06.26

  1. float&&double
    推荐全部使用double,注意区分scanf("%lf",&double1);printf("%f",double1);
    分清%md,%0md,%.md以及可以合用%n.md

  2. getchar()&&putchar()
    getchar可以识别换行符\n

看完 2.4 跟着coding
page39**

2019.06.27

  1. 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;
    } 
    
  2. memset
    需添加<string.h>头文件

    memset(a,值,sizeof(a)); //值只能用0,-1;按位赋值;
    
  3. sscanf&sprintf

  4. void change(int a[],int b[][5]); //传参数二维数组需要写大小,且数组是传地址,修改即是对原数组的修改。

  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;
    }
    
  6. 构造函数初始化结构体

    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");
    
  7. const double Pi=acos(-1.0);定义Pi;

第2章还差最后一节黑盒测试。明天看完开始第三章。

2019.06.28

  1. 各种测试读取方法;再出现问题就总结;
 //while(scanf("%d",&n)!=EOF){}
 //while(scanf("%s",str)!=EOF){}
 //while(gets(str)!=NULL){}
 //if(!n) break;
  1. 今日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')

  2. 看了第三章第一节开始做PAT网站上的题,书要放慢速度啃了。争取每天AC5题,多的时间过书和书后的习题。

2019.06.29

  1. 今日AC
    1006 EZ.
    1007全是坑,自己思路没错但是输出格式错误。注意各种0的情况。动态规划方法
    1009正常做。注意输出格式。在不溢出的情况下,申请数组可以尽量大些,基本也不影响超时。
    1011EZ.

  2. 1010进制转换问题。无法AC。AC代码似乎要用二分法搜索【0711已AC】

2019.06.30

  1. 今日AC
    1012学习使用C++的sort,算法笔记P235,sort(a,a+N,cmp);
    1015测试用例2折腾半天,质数的判断,最好还是吧0,1,2单独列出来返回结果。0,1不是质数(也不是合数,2是质数)质数英文prime number。
    1019EZ.注意特殊情况0即可。

  2. 未完成:
    1016Phone bills,太复杂了,读懂意思到写出完整代码花了一个多小时,然后样例过了测试全错,找不到格式错误,逻辑似乎也没有问题,自己编的例子看起来也都跑通了,有时间再看看别人ac的代码吧,或者学了别的数据结构重写。【20190718已AC】

    1020二叉树看了开头,明天继续,【20190701已AC】

20190701

  1. AC:
    1020二叉树,基础题,跟着算法笔记复习了一遍前中后层次四种遍历,以及利用前中、中后遍历数据构建二叉树的算法。代码全部贴进去了。代码
    1094EZ.再做可以用树试试;
    1079EZ.数组大小波动大时用vector

  2. 未完成:
    1056 复习到队列再试试【20190702已AC】

20190702

  1. AC:
    1064 完全搜索二叉树 重点再做做 代码博文
    1054 只需要得到最大的数是什么的话,对对碰遍历一遍即可~ 很有启发性的巧题;
    1047基础题,优化一下就可以过最后一个用例了,
    1031EZ
    1110判断是否为完全二叉树
    完全二叉树需要满足:
    1)如果一个结点有右孩子而没有左孩子,那么这棵树一定不是完全二叉树。
    2)如果一个结点有左孩子,而没有右孩子,那么层序遍历里这个结点之后的所有结点都是叶子结点这棵树才是完全二叉树。
    3)如果一个结点是叶子结点,那么层序遍历里这个结点之后的所有结点

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值