2018.2.16

2018.2.16总结

关于算法笔记
  • 今天通过算法笔记,复习了C(C++)的基本使用方法。
    • 对于基本的变量的定义,使用scanf()、printf()以及getchar()、putchar() 还有get()、puts() 进行数据的输入、输出。
    • 对于数组的使用,还有memset() 的统一赋值的使用。
      memset(数组名,值,sizeof(数组名)),建议只赋值0和-1,其他值使用fill()进行赋值
  • 对于OJ的黑盒测试也有了更深的了解
    • 分为单点测试、多点测试(对应不同的输入控制)
  • 对于日期类的题目,使用预处理方法,用空间换空间,以及使用数组进行日期的计算有了一定的了解,一下是常用的
int dayOfMonth[13][2] =
{
    {0,0},
    {31,31},
    {28,29},
    {31,31},
    {30,30},
    {31,31},
    {30,30},
    {31,31},
    {31,31},
    {30,30},
    {31,31},
    {30,30},
    {31,31}
};

int helper(int year)
{
    if(year%4==0&&year%100!=0||year%400==0)
        return 1;
    return 0;
}
struct Date
{
    int day;
    int month;
    int year;
    void nextDay()
    {
        day++;
        if(day>dayOfMonth[month][helper(year)])
        {
            day =1;
            month++;
            if(month>12)
            {
                month=1;
                year++;
            }
        }
    }
};
  • 还有进制转换类题目的大致流程,其中一个比较大的坑是要使用do-while而不是while,避免需要转换的数字为零时的bug
    int ans[32] = {0},num = 0;
    do
    {
        ans[num++] = c%d;
        c/=d;
    }while(c!=0);
    for(int i = num -1; i>=0; i--)
    {
        printf("%d",ans[i]);
    }
  • 还有一个比较重要的收获是,关于使用C++中的排序函数sort()的使用

    使用sort()必须先引入头文件和命名空间#include <algorithm>、using namespace std

    使用格式如下sort(元素首地址,尾元素的最后一个地址,比较函数), 对于我们定义的结构体,或者说STL容器时,这时候我们就需要cmp()比较函数登场了

    对于下面的代码

    bool cmp(student t1,student t2){
      return t1.score > t2.score //降序排序
    }

    对于>还是<的问题,有一个简答的记法

    • > 是从大往小排,所以是降序
    • < 是从小往大排,所以是升序

    对于STL容器的使用,等我们接触到再详细描述。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值