使用回溯的 Knights Tour 问题:代码不生成任何输出

问题描述

检查下一个单元格对骑士是否安全的功能

def isSafe(arr,i,j,visited,n):

    if(i<0 or j<0 or i>=n or j>=n or  visited[i][j]==True):
            return False
    return True

显示板/阵列的功能

def display(arr,n):
    for i in range(n):
         for j in range(n):
              print(arr[i][j],end="")
         print()

开始骑士之旅的功能: 我使用计步器从 0 到 n²-1 计算骑士的步数。

基本情况触发显示

我用计步器初始化数组,然后检查下一个单元格是否安全。

def knightsT(arr,n,c,visited):


    if c==((n*n)-1): #Base Case
        arr[i][j]=c
        display(arr,n)
    
    if c>=n*n:
        return


    arr[i][j]=c
    visited[i][j]=True
    iDir=[1,1,-1,2,-2,-2]
    jdir=[2,-1]
    for k in range(0,8,1):
        if isSafe(arr,i+iDir[k],j+iDir[k],n):
            knightsT(arr,c+1,visited)
    arr[i][j]==0.       #Backtracking
    visited[i][j]=False #Backtracking

Python 的主要功能

l=[[0]*5 for i in range(5)]
visited=[[False]*5 for i in range(5)]
n=len(l)
knightsT(l,visited)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)