ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法笔记-第三章所有题目解

2020-08-12 10:01:29  阅读:263  来源: 互联网

标签:date1 date2 第三章 int mm1 笔记 算法 yy1 return


背景

最近在恶补数据结构和算法相关的知识,查询到一本比较好的书籍算法笔记,然后就开始学习了,学完第二章C/C++语言基础后,做了第三章的题目,虽然书上已经有题解了,但是还是想发表这篇文章,原因是通过记录下来我的学习过程,以提醒和鼓励自己。

第三章题解

#include <stdio.h>
#include <cstring>

int main() {

}

/**
 * 说反话
 * @return
 */
int reverseWords() {
    char strOri[80] = {};
    char words[40][80] = {};
    gets(strOri);
    int rowNum = 0;
    int colNum = 0;
    for (int i = 0; i < strlen(strOri); ++i) {
        //不是空格的就放入二维数组,直到遇到空格,改成下一行
        if (strOri[i] != ' ') {
            words[rowNum][colNum] = strOri[i];
            colNum++;
        } else {
            rowNum++;
            colNum = 0;
        }
    }

    //倒叙输出二维数组的单词
    for (int i = rowNum; i >= 0; i--) {
        printf("%s ", words[i]);
    }
}

/**
 * 判断回环字符串
 * @return
 */
int loopback() {
    char str[256] = {};
    scanf("%s", str);

    int length = strlen(str);

    for (int i = 0; i < length / 2; ++i) {
        if (str[i] != str[length - i - 1]) {
            printf("%s", "NO");
            return 0;
        }
    }
    printf("%s", "YES");
    return 0;
}

/**
 * 进制转换
 * @return
 */
int baseChange() {
    //a,b<= 2^30 -1,1<n<=10
    //a+b<= 2^31 -2
    //int 范围:2^31-1,所以a+b可以用int来接收
    int a, b, d;
    scanf("%d%d%d", &a, &b, &d);
    int sum = a + b;
    int resultNumber[32] = {0};
    //除基取余
    int i = 0;
    for (;; ++i) {
        resultNumber[i] = sum % d;
        if (sum / d == 0) {
            break;
        }
        sum = sum / d;
    }

    for (int j = i; j >= 0; j--) {
        printf("%d", resultNumber[j]);
    }
    return 0;
}

/**
 * 日期计算器
 * @return
 */
int dateCal() {
    int date1, date2;
    scanf("%d%d", &date1, &date2);
    if (date1 > date2) {
        int tmp = date1;
        date1 = date2;
        date2 = tmp;
    }

    int yy1 = date1 / 10000, mm1 = date1 % 10000 / 100, dd1 = date1 % 100;
    int yy2 = date2 / 10000, mm2 = date2 % 10000 / 100, dd2 = date2 % 100;


    //第一个日期不断加N天,直到等于第二个日期
    int n = 0;
    while (true) {
        //构建新日期串
        dd1 = dd1 + 1;

        int ddlast = 0;
        bool is31 = mm1 % 2 == 1 || mm1 == 8;
        if (is31) {
            ddlast = 31;
        } else if (mm1 == 2) {
            //判断是否闰年
            bool isRun = (yy1 % 4 == 0 && yy1 % 100 != 0) || (yy1 % 400 == 0) ? true : false;
            if (isRun) {
                ddlast = 29;
            } else {
                ddlast = 28;
            }
        } else {
            ddlast = 30;
        }

        if (dd1 > ddlast) {
            dd1 = 1;
            mm1 = mm1 + 1;
        }

        if (mm1 > 12) {
            mm1 = 1;
            yy1 = yy1 + 1;
        }

        if (!(dd1 == dd2 && mm1 == mm2 && yy1 == yy2)) {
            n += 1;
        } else {
            break;
        }
    }
    printf("%d", n + 2);
    return 0;
}

标签:date1,date2,第三章,int,mm1,笔记,算法,yy1,return
来源: https://www.cnblogs.com/ging/p/13488956.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有