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

N皇后问题中isvalid函数出现invalid operands to binary expressions错误

N皇后问题isvalid函数编译错误排查与修复

错误原因

  • 重复定义变量:函数内多次使用int x = row; int y = col;,C++不允许同一函数作用域内重复定义同名变量,这会导致编译器解析混乱,错误提示位置被误导到board[x][y] == 'Q'行。
  • 非标准逻辑运算符:使用了and作为逻辑与,这是C++的替代关键字,需要特定编译选项支持,标准写法应为&&。
  • 语法遗漏:return true末尾缺少分号,违反C++语法规则。

修复后的代码

bool isvalid(vector<vector<string>>& board, int &row, int &col, int &n){
   
    int x = row ;
    int y = col ;
    while(y >= 0){
        if(board[x][y] == 'Q'){
            return false; 
        }
        y--  ;
    }
    // 重新赋值,不再重复定义变量
    x = row ;
    y = col ;
    while(x >= 0 && y >= 0){
        if(board[x][y] == 'Q') return false; 
        x-- ;
        y-- ;
    }
    x = row ;
    y = col ;
    while(x < n && y >= 0){
        if(board[x][y] == 'Q') return false; 
        x++ ;
        y-- ;
    }
    return true; // 补上分号
}

关键修改点

  • 去掉后续x和y定义前的int,改为直接赋值,避免重复定义。
  • 将and替换为标准C++逻辑与运算符&&。
  • 为return true添加末尾分号。

内容的提问来源于stack exchange,提问作者HIMANSHU KUMAR AMB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:09:25