首页 / 算法 / 算法笔记-第三章所有题目解
算法笔记-第三章所有题目解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法笔记-第三章所有题目解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2147字,纯文字阅读大概需要4分钟。
内容图文
![算法笔记-第三章所有题目解](/upload/InfoBanner/zyjiaocheng/627/81096f773c9749489872a06ba75a3ac0.jpg)
背景
最近在恶补数据结构和算法相关的知识,查询到一本比较好的书籍算法笔记,然后就开始学习了,学完第二章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;
}
内容总结
以上是互联网集市为您收集整理的算法笔记-第三章所有题目解全部内容,希望文章能够帮你解决算法笔记-第三章所有题目解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。