八个细胞 2023-06-28 09:20 采纳率: 50%
浏览 21

C++ vs 调试 代码跳转异常

leetcode的n皇后,自己写的代码
打断点:

img

第一次继续后:

img

第二次继续后:

img

为什么直接跳到return了啊?我前面的函数怎么不先执行啊?

第三次继续后:

img

为什么会是return后才跳到这里执行?

main函数应该没有问题:
就两句 int main(){Solution nq;nq.solveNQueens(4);}

leetcode也能ac啊?

img

这个先return再跳到上面超出我的认知了

(由于不能发视频,但是这里的顺序真的不是我故意弄反,它就是这样的,为什么啊?)

  • 写回答

1条回答 默认 最新

  • java入门选手 2023-06-28 09:28
    关注

    基于new bing部分指引作答:
    下面是答案你可以参考下
    解决 N 皇后问题是一个经典的回溯算法问题。下面是一个使用 C++ 实现 N 皇后问题的示例代码:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    bool isValid(vector<int>& queens, int row, int col) {
        for (int i = 0; i < row; ++i) {
            // 检查是否同列或同对角线上有皇后
            if (queens[i] == col || abs(queens[i] - col) == abs(i - row)) {
                return false;
            }
        }
        return true;
    }
    
    void solveNQueens(int n, int row, vector<int>& queens, vector<vector<string>>& result) {
        if (row == n) {
            // 生成结果
            vector<string> solution(n, string(n, '.'));
            for (int i = 0; i < n; ++i) {
                solution[i][queens[i]] = 'Q';
            }
            result.push_back(solution);
            return;
        }
    
        for (int col = 0; col < n; ++col) {
            if (isValid(queens, row, col)) {
                queens[row] = col;
                solveNQueens(n, row + 1, queens, result);
            }
        }
    }
    
    vector<vector<string>> solveNQueens(int n) {
        vector<vector<string>> result;
        vector<int> queens(n, -1);
        solveNQueens(n, 0, queens, result);
        return result;
    }
    
    int main() {
        int n = 4;
        vector<vector<string>> result = solveNQueens(n);
        
        for (const auto& solution : result) {
            for (const auto& row : solution) {
                cout << row << endl;
            }
            cout << "=========" << endl;
        }
        
        return 0;
    }
    

    上面的代码使用回溯算法解决了 N 皇后问题。在 solveNQueens 函数中,通过递归实现回溯搜索。isValid 函数用于检查当前位置是否可以放置皇后。最后,将符合要求的结果存储在 result 变量中并返回。

    您可以根据具体需求修改变量 n 的值来计算不同规模的 N 皇后问题。运行程序后,程序将打印出所有的解法,每个解法以二维字符矩阵的形式展示,其中 'Q' 表示皇后的位置,'.' 表示空位。

    请注意,对于较大的 n 值,N 皇后问题可能会有很多解,输出结果可能会非常庞大。如果需要限制输出数量,您可以在找到足够数量的解后提前终止搜索。

    评论

报告相同问题?

问题事件

  • 修改了问题 6月28日
  • 创建了问题 6月28日

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并