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

降低时间复杂度---一起来ABC

在这里插入图片描述

法一:时间复杂度O(n2)

1. 分析解题思路:
  • 我们要找出满足x + y=z,且x\in[0,a],y\in[0,b],z\in[0,c]的三元组(x,y,z)的个数。

  • 可以通过遍历x和y的所有可能取值,然后根据x + y = z判断z是否在[0,c]范围内,如果在,则找到一个满足条件的三元组。

2. 具体计算过程:
  • 我们使用嵌套循环来遍历x和y的取值。

  • 外层循环遍历x,x从0到a,内层循环遍历y,y从0到b。

  • 对于每一组(x,y),计算z=x + y。如果z满足0\leq z\leq c,则满足条件的三元组个数增加1。

- 用Python代码实现如下:
python
  
a, b, c = map(int, input().split())
count = 0
for x in range(a + 1):
    for y in range(b + 1):
        z = x + y
        if 0 <= z <= c:
            count += 1
print(count)

法2:时间复杂度O(n)

cpp
  
#include <iostream>
using namespace std;

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    int count = 0;
    for (int x = 0; x <= a; ++x) {
        int y_count = max(0, min(b, c - x));
        count += y_count;
    }
    cout << count << endl;
    return 0;
}

在这段代码中:

  1. 首先从标准输入读取三个整数a、b、c。

  2. 然后通过 for 循环遍历x从0到a。

  3. 在每次循环中,计算当前x值下满足条件的y的个数,使用 max(0, min(b, c - x)) 来确保y的个数不会为负数且在合理范围内。

  4. 将每个x对应的y的个数累加到 count 变量中。

  5. 最后输出满足条件的三元组的个数。

相关文章:

  • 【leetcode100】搜索插入位置
  • 【OpenCV C++】如何快速 高效的计算出图像中大于值的像素个数? 遍历比较吗? No,效率太低!那么如何更高效?
  • Java中的消息中间件对比与解析:RocketMQ vs RabbitMQ
  • C++实现rabbitmq生产者消费者
  • 蓝桥杯2023年第十四届省赛真题-子矩阵
  • Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(五)
  • C语言每日一练——day_7
  • ASP3605抗辐照加固同步降压调节器——商业航天电源芯片解决方案新选择
  • 鸿蒙下载文件保存到手机本地公共文件夹下、将本地的沙箱目录文件,保存到公共目录,鸿蒙picker save保存文件为空(0字节)的问题
  • windows命令:创建和打开文件
  • React + Node.js实践 仿B站评论
  • JavaScript 编程:从基础到高级应用的全面探索
  • 嵌入式开发之STM32学习笔记day08
  • ffmpeg库视频硬编码使用流程
  • Redis哨兵模式-黑马学习笔记
  • STM32F429单片机FMC接口驱动TFT LCD和SDRAM
  • Flutter Dart 泛型详解
  • OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher
  • 【论文阅读】CARES:医学视觉语言模型可信度的综合基准
  • 2025-03-17 学习记录--C/C++-PTA 习题4-7 最大公约数和最小公倍数
  • 上海第三家“胖永辉”在浦东开业,设立了外贸产品专区
  • 体坛联播|利物浦提前4轮夺冠,安切洛蒂已向皇马更衣室告别
  • 夜读丨庭院春韵
  • 伊朗港口爆炸已造成25人死亡,灭火行动已近尾声
  • 伊朗港口爆炸致18死800余伤,三分之二伤者已出院
  • 葛兰西的三位一体:重提并复兴欧洲共产主义的平民圣人