返回题目列表
COMP2521
复杂度 · 数三角双循环的次数
复杂度 · 数一数这段双循环跑几步
复杂度分析的基本功是「会数一段代码到底执行多少次」。下面这段经典的「三角形」双重循环:
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
ops++;读入 n,输出 ops++ 总共执行的次数。
请补全 countOps:可以老老实实用两层循环数,也可以用公式。
关键推导:外层i固定时,内层从i+1到n-1跑n-1-i次。把i=0..n-1全加起来 =(n-1)+(n-2)+…+1+0 = n(n-1)/2。这正是为什么这类双循环是 O(n²)(n(n-1)/2 的最高阶是 n²)。
输入
- 一行:整数
n(0 ≤ n ≤ 100000)。
输出
- 一行:
ops++执行的总次数。
示例:输入 5 → 输出 10(4+3+2+1+0)。
样例
stdin
5
期望输出
10
stdin
3
期望输出
3
c-dcc
14