当前位置: 首页 > news >正文

c++算法第4天

本篇文章包含三道算法题,难度由浅入深,适合新手练习哟

 第一题

题目链接

牛牛的快递_牛客题霸_牛客网

题目解析

<=1kg   ------->      20元         大于1kg:超出部分每千克1元

加急     5元        

代码原理

代码编写

#include <iostream>

#include<cmath>

using namespace std;

int main() {

    double a = 0.0;

    char b;

    int dollor = 0;

    cin >> a >> b;

    if(a <= 1)

    {

        if(b != 'y')

        {

            dollor += 20;

        }

        else {

        dollor += 25;

        }

    }

    if(a > 1)

    {

        if(b != 'y')

        dollor = dollor + 20 + ceil(a - 1);

        else

        dollor = dollor + 20 + ceil(a - 1) + 5;

    }

    cout << dollor;

    return 0;

}

当然啦,这题使用c语言也是一样的思路

本题总结

通过本题,我们需要了解的头文件有<cmath>(c++版本)<math.h>(c语言版本)

其次了解ceil这个库函数,ceil这个库函数的作用是向上取整

第二题

题目链接

. - 力扣(LeetCode)

题目解析

题目要求:返回第n个泰波那契数

题目条件:1.  T0 = 0, T1 = 1,T2 = 2

                  2.  T(n+3) = T(n) + T(n + 1) +T(n + 2)  这里,我们把这个条件处理一下——>T(n) = T(n - 3) + T(n - 2) + T(n - 1)

代码原理

由于博主也是第一次接触这个动态规划,但博主会尽可能地给大家讲懂,当然有疑惑,依旧可以在评论区留言

代码编写

class Solution {

public:

    int tribonacci(int n) {

        //边界情况处理

        if(n == 0)

        return 0;

        if(n == 1 || n == 2)

        return 1;

        //创建dp表

        vector<int> dp(n + 1);

        //初始化

        dp[0] = 0, dp[1] = dp[2] = 1;

        //填表顺序

        for(int i = 3; i <= n; i++)

        {

            dp[i] = dp[i -3] + dp[i - 2] + dp[i - 1];

        }

        //返回值

        return dp[n];

    }

};

本题总结

关于动态规划分析的题分五步

1.状态表示

2.状态转移方程

3.初始化(根据题目要求初始化,目的是防止越界)

4. 填表顺序

5.返回值

代码编写五步走

1.创建dp表

2.初始化(根据题目要求初始化,目的是防止越界)

3. 填表顺序

4.返回值

5.分析代码是否需要处理细节问题(如边界处理)

第三题

题目链接

最小花费爬楼梯_牛客题霸_牛客网

题目解析

 代码原理

代码编写

#include <iostream>

using namespace std;

const int  N = 1e5 + 10;

int n;

int cost[N];

//创建dp表

int dp[N];

int main() {

cin >> n;

//初始化

for(int i = 0; i < n; i++)

{

    cin >> cost[i];

}

//状态转移方程

for(int i = 2; i <= n; i++)

{

    dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);

}

cout << dp[n];

return 0;

}

本篇文章的算法题就先到这里,喜欢我的小伙伴给我点个关注,我怕你下次就找不到我了!

都看到这里了,给个三连呗,谢谢啦!


http://www.mrgr.cn/news/55706.html

相关文章:

  • iOS Swift逆向——deMangle过程中的偏移计算
  • python绝对值怎么表示
  • 【C#】MessageBox
  • vue查缺补漏
  • OpenCV高级图形用户界面(21)暂停程序执行并等待用户按键输入函数waitKey()的使用
  • 关于上一篇【判断素数的函数】超详细讲解
  • django5入门【03】新建一个hello界面
  • 速盾高防 CDN 防御效果如何?
  • 深入理解 Kafka
  • 基于微信小程序二手物品调剂系统设计与实现
  • Qt开发——Qt项目打包、整合以及生成安装包保姆级教程(Windows系统)
  • WSL2安装ros,安装anaconda,配置PX4
  • 传智杯 第六届—第二场—D
  • 【前端】如何制作一个自己的网页(13)
  • Redis 集群
  • 01,hana
  • 开源EMO再升级!复旦|百度|南大推出Hallo2,可以生成4K,一小时的音频驱动的视频。
  • AGV电子地图之贝塞尔曲线
  • 每日OJ题_牛客_[NOIP2001]装箱问题_01背包_C++_Java
  • 面试总结(持续更新~)
  • 100多种【基于YOLOv8/v10/v11的目标检测系统】目录(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)
  • pychar社区版下载
  • Leetcode|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
  • 01 一篇读懂25机械考研复试超全流程讲解|考研面试经验和面试真题快来背诵!
  • 内网穿透frp部署
  • Spring Boot慢启动?一文带你轻松优化!