美文网首页
C++笔试算法解题思路-爬坑笔记

C++笔试算法解题思路-爬坑笔记

作者: JianLee | 来源:发表于2022-01-17 17:46 被阅读0次
1、猴子吃桃问题

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
使用递归思路解决,

#include <iostream>

using namespace std;

int num(int n) {
    int i;
    if (n == 1)i = 1;
    else i = 2 * (num(n - 1) + 1);
    return i;
}

int main() {
    cout << "猴子一共摘了" << num(10) << "个桃子";
    return 0;
}
2、判断闰年

被4整除,并且不是100个倍数
被4整除,是100且是400倍数

#include <iostream>
using namespace std;
 
int main()
{
    int year;
 
    cout << "输入年份: ";
    cin >> year;
 
    if (year % 4 == 0)
    {
        if (year % 100 == 0)
        {
            // // 这里如果被 400 整除是闰年
            if (year % 400 == 0)
                cout << year << " 是闰年";
            else
                cout << year << " 不是闰年";
        }
        else
            cout << year << " 是闰年";
    }
    else
        cout << year << " 不是闰年";
 
    return 0;
}
3、绘制三角形图案

解题思路:
正直角和反直角,for循环嵌套,外层控制行,内层控制星的个数。
正三角,首先判断每一行空白处,在非空白处打*(个数为n行+2),一行打印结束换行。

#include <iostream>

using namespace std;
int main() {
    cout << "请输入行数";
    int rows;
    cin >> rows;
    cout << "正直角三角" << endl;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j <= i; j++) {
            cout << "*";
        }
        cout << endl;
    }
    cout << "反直角三角" << endl;
    for (int i = 0; i < rows; i++) {
        for (int j = rows; j > i; j--) {
            cout << "*";
        }
        cout << endl;
    }
    cout << "正三角" << endl;
    int n = 1;
    for (int i = 1; i <= rows; i++) {
        for (int j = 0; j < rows - i; j++) {
            cout << " ";
        }
        for (int k = 0; k < n; k++) {
            cout << "*";
        }
        n += 2;
        cout << endl;
    }
    return 0;
}
4、最大公约数和最小公倍数

最大公约数:取min数做判断,满足同时整除两数的最大一个数
最小公倍数:取max数做判断,满足同时整除两数的最小一个数 解法2:(a*b)/最大公约数

#include <iostream>
using namespace std;
 
int main()
{
    int n1, n2;
 
    cout << "输入两个整数: ";
    cin >> n1 >> n2;
    
    while(n1 != n2)
    {
        if(n1 > n2)
            n1 -= n2;
        else
            n2 -= n1;
    }
 
    cout << "HCF = " << n1;
    return 0;
}

#include <iostream>
using namespace std;
 
int main()
{
    int n1, n2, max;
 
    cout << "输入两个数: ";
    cin >> n1 >> n2;
    
    // 获取最大的数
    max = (n1 > n2) ? n1 : n2;
 
    do
    {
        if (max % n1 == 0 && max % n2 == 0)
        {
            cout << "LCM = " << max;
            break;
        }
        else
            ++max;
    } while (true);
    
    return 0;
}

相关文章

  • C++笔试算法解题思路-爬坑笔记

    1、猴子吃桃问题 一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;...

  • 剑指offer编程题—数字在排序数组中出现的次数

    题目描述统计一个数字在排序数组中出现的次数。 解题思路1暴力循环 解题思路2借用C++ STL中的算法equal_...

  • 算法总结篇-(1)--算法思想

    算法包括三部分:算法思想 + 排序算法 + 查找算法 算法思想: 算法思想 就是 解题思路。常见的解题思路有如下:...

  • LeetCode Record C++

    本文内容为练习LeetCode题目时的解题思路和不同算法的记录,实现语言为C++,代码保存在Github,均已在L...

  • leetcode第77题:组合 [中等]

    题目描述 考点 回溯算法 解题思路 代码实现

  • 算法类解题思路

    1.二叉树节点类核心是递归,左右交叉的典型代码 2.字符串回文类型核心是整体思想,将回文作为一个整体字符看待,下个...

  • 贪婪算法的解题思路

    贪婪算法的解题思路 [toc] 本来想叫《贪婪算法的设计思想》的,但是觉得写的不够深,纯粹以解题为目的的复习还是不...

  • 数据结构与算法

    今天开始重温算法,因此建立了这个《数据结构与算法》的专题,收录自己写的算法解题思路,记录学习算法的过程。算法还是要...

  • 求职百问丨图形推理解题思路详解!

    在开始介绍各大热门行业之前,先把之前留得笔试题尾巴给了结了,这期先讲笔试中图形推理题的解题思路。 一、图形题的类型...

  • LeetCode 第207题:课程表

    1、前言 2、思路 使用拓扑排序的方法,拓扑排序其实是使用的 BFS 算法,简而言之使用 BFS 算法解题。算法流...

网友评论

      本文标题:C++笔试算法解题思路-爬坑笔记

      本文链接:https://www.haomeiwen.com/subject/pwnchrtx.html