前言
随着信息时代的不断发展,编程这门技术也越来越重要,很多人都开启了编程学习,本文就介绍了编程中时间复杂度的基础内容。
一、时间复杂度是什么?
一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。\n\n一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
二、使用步骤
1.判断代码是否超时
例如题目
题目描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 aa 道题目,周六和周日每天做 bb 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 nn 题?
输入格式
输入一行包含三个整数 a, ba,b 和 nn.
输出格式
输出一个整数代表天数。
输入输出样例
输入 #1复制
10 20 99
输出 #1复制
8
说明/提示
对于 50 \%50% 的评测用例,1 \leq a, b, n \leq 10^{6}1≤a,b,n≤106.
对于 100 \%100% 的评测用例,1 \leq a, b, n \leq 10^{18}1≤a,b,n≤1018.
蓝桥杯 2022 省赛 B 组 C 题。
来看下面代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a,b,h,g,c=0,d=0;
cin>>a>>b;
cin>>n;
while(c>=n){
d++;
if(d%7==0||d%7==6)
c+=b;
else
c+=a;
}
cout<<d;
}
因为计算机一次大概只能计算10^9次,从代码上看,效率较低,且明显超时;所以要进行优化
2.代码优化
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a,b,h,g,c=0,d=0;
cin>>a>>b;
cin>>n;
h=a*5+b*2;
g=n/h;
n=n%h;
while(n>0){
d++;
if(d<=5){
n-=a;
}
else{
n-=b;
}
}
cout<<g*7+d;
}
总结