leetcode 51

https://leetcode.com/submissions/detail/124893020/


83%的成绩,其实程序不难,但很久没写N Queen问题了

var solveNQueens = function(n) {
    arr_l=[];
    arr=[];

    search(0);
    function search(i){

        if(i==n){
            arr1=[];
            for(var i=0;i<n;i++){
                arr1[i]="";
                for(var j=0;j<n;j++){
                    if(arr[i]==j){
                        arr1[i]+='Q';
                    }else{
                        arr1[i]+='.';
                    }
                }
            }
            arr_l.push(arr1);
            return ;
        }

        for(var j=0;j<n;j++){
            flag=0;
            arr[i]=j;
            for(var k=0;k<i;k++){
                if(arr[k]==j || Math.abs(k-i)==Math.abs(arr[k]-arr[i]) ){
                    flag=1;
                    break;
                }
            }
            if(flag==0){

                search(i+1);
            }
        }
    }
    return arr_l;
};
console.log(solveNQueens(4));

LeetCode51 题 N-Queens 的 Python 解法中,出现 `NameError: name 'backtracking' is not defined` 错误通常表明代码中调用了名为 `backtracking` 的函数或方法,但该函数并未在代码中定义或导入。从提供的引用来看,问题的解决方案主要依赖于递归和回溯的思想来放置皇后,并在冲突检测后进行状态回退。 此类错误的常见原因包括: - 在代码中错误地引用了 `backtracking` 函数,但没有定义该函数或使用了错误的函数名。 - 代码结构混乱,例如将递归调用指向了未定义的 `backtracking` 而非实际的递归函数名,如 `NQueens`。 例如,引用中的代码定义了一个名为 `NQueens` 的递归函数来实现回溯逻辑[^1]。如果尝试将该函数调用改为 `backtracking` 但未重新定义该函数,则会导致 `NameError`。 ### 解决方法 1. **检查函数名是否拼写错误**:确保所有调用与函数定义中的名称一致。例如,如果函数定义为 `NQueens`,则所有调用都应使用 `NQueens`。 2. **替换未定义的函数名**:如果试图使用 `backtracking` 作为函数名,请定义该函数或替换为已存在的函数名。 3. **确保函数作用域正确**:全局函数或嵌套函数需要在调用前定义,以避免解释器无法识别该函数。 以下是一个修正后的示例代码,确保函数名一致性并避免 `NameError`: ```python def solveNQueens(n): def backtrack(row, positions, result, n): if row == n: result.append(positions[:]) return for col in range(n): if is_safe(positions, row, col): positions.append(col) backtrack(row + 1, positions, result, n) positions.pop() def is_safe(positions, row, col): for r in range(row): c = positions[r] if c == col or abs(c - col) == row - r: return False return True result = [] backtrack(0, [], result, n) return [["." * c + "Q" + "." * (n - c - 1) for c in solution] for solution in result] # 示例调用 print(solveNQueens(4)) ``` ### 调试建议 - 确保代码中没有对未定义的函数(如 `backtracking`)进行调用。 - 检查所有函数定义与调用是否一致。 - 使用调试工具或打印语句,逐步验证函数调用流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值