You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C/C++嵌套循环中双数组条件判断的逻辑错误排查

问题分析

你的代码逻辑错误在于:内层循环遍历反派武器时,每次比较都会覆盖secret的值,最终secret只保留了最后一个英雄武器和最后一个反派武器的比较结果,而不是判断是否存在某个英雄武器能击败所有反派武器。

比如你给出的测试用例,英雄武器9确实比所有反派武器都大,但因为最后一个英雄武器是2,和反派最后一个武器3比较后secret被设为false,导致最终输出错误。


解决方案一:修正嵌套循环逻辑

调整判断逻辑:对每个英雄武器,先假设它能击败所有反派武器(设临时标记),如果遇到任何一个反派武器比它大,就推翻假设并跳出内层循环;如果遍历完所有反派武器都没被推翻,就说明找到符合条件的武器,直接设置secret为true并终止所有循环。

修正后的代码:

#include <stdio.h>
#include <stdbool.h>

int main(){
    int N, M;
    bool secret = false;
    scanf("%d %d", &N, &M);
    int X[N];
    int Y[M]; 
    for(int i = 0; i < N; i++){
        scanf("%d", &X[i]);
    }
    for(int i = 0; i < M; i++){
        scanf("%d", &Y[i]);
    }

    for(int i = 0; i < N; i++){
        bool canBeatAll = true; // 假设当前英雄武器能击败所有反派
        for(int j = 0; j < M; j++){
            if(X[i] <= Y[j]){ // 只要有一个反派武器更大,就推翻假设
                canBeatAll = false;
                break; // 没必要继续比较当前英雄武器了
            }
        }
        if(canBeatAll){ // 如果找到符合条件的武器
            secret = true;
            break; // 没必要继续检查其他英雄武器了
        }
    }

    if(secret){
        printf("The dark secret was true\n");
    } else{
        printf("Secret debunked\n");
    }
    return 0;
}

解决方案二:先找反派武器的最大值(更高效)

先找出反派武器数组Y中的最大值,再检查英雄武器数组X中是否存在大于这个最大值的元素即可。这种方法时间复杂度更低(O(N+M) vs 原方法的O(N*M)),逻辑也更简洁。

代码实现:

#include <stdio.h>
#include <stdbool.h>

int main(){
    int N, M;
    bool secret = false;
    scanf("%d %d", &N, &M);
    int X[N];
    int Y[M]; 
    for(int i = 0; i < N; i++){
        scanf("%d", &X[i]);
    }

    // 找出反派武器的最大值
    int maxY = -1; // 假设伤害值都是正整数,可根据实际情况调整初始值
    for(int i = 0; i < M; i++){
        scanf("%d", &Y[i]);
        if(Y[i] > maxY){
            maxY = Y[i];
        }
    }

    // 检查是否有英雄武器大于maxY
    for(int i = 0; i < N; i++){
        if(X[i] > maxY){
            secret = true;
            break; // 找到后直接退出循环
        }
    }

    if(secret){
        printf("The dark secret was true\n");
    } else{
        printf("Secret debunked\n");
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Nelsen Cookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:35:38