当前位置: 首页 > 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 最大公约数和最小公倍数
  • 有乘客被高铁车门夹住?铁路回应:系突感不适下车,未受伤,列车正点发车
  • 美权威人士批“特朗普对进口电影征关税”:将杀死美电影产业
  • 印度扩大对巴措施:封锁巴基斯坦名人账号、热门影像平台
  • 英伟达:美国无法操纵监管机构在AI领域取胜,美企应专注创新而不是编造荒诞谣言
  • 李在明涉嫌违反《公职选举法》案将于15日进行首次重审公审
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次