微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用回溯的 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 举报,一经查实,本站将立刻删除。