✏️ 纠错
第 237 题 / 共 301 题
第11题 给定如下算法,其时间复杂度为( )。
bool f(int arr[], int n, int target) {
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = 0; j < n; j++) {
            if (i & (1 << j)) {
                sum += arr[j];
            }
        }
        if (sum == target) return true;
    }
    return false;
}
📝 题目解析

【GESP考点】时间复杂度分析、位运算与循环结构

【正确答案】D

【题目解析】

该算法中有两层嵌套的循环。外层循环从0到n - 1,执行n次。对于外层循环的每一次迭代,内层循环也从0到n - 1,执行n次。因此,总的执行次数为n×n=n2,所以该算法的时间复杂度为O(n2),选项B正确。