VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之八皇后问题的Python实现和C#实现

看到八皇后问题的解决思路, 感觉很喜欢。 我用C#实现的版本之前贴在了百度百科上(https://baike.baidu.com/item/%E5%85%AB%E7%9A%87%E5%90%8E%E9%97%AE%E9%A2%98#2_7)。百度百科已经有Python版本, 且效率比我的高一点儿, 所以决定把我的版本在博客园贴出来。相信我的版本更容易理解。 希望能够对大家有所帮助。上代码:

Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# EightQueens.py
def checkConflict(queenList, nextY):
    for posY in range(nextY):
        if abs(queenList[posY]-queenList[nextY])==abs(posY-nextY) or queenList[posY] == queenList[nextY]:
            return True
    return False
 
count = 0
def putQueen(queenCount, queenList, nextY):
    for queenList[nextY] in range(queenCount):
        if checkConflict(queenList, nextY)==False:
            nextY+=1
 
            if nextY < queenCount:
                putQueen(queenCount, queenList, nextY)
            else:
                global count
                count+=1
                print(str(count)+": " + ", ".join(str(pos) for pos in queenList))
 
            nextY-=1
 
# call the method
queenCount = 12
queenList = [0* queenCount
putQueen(queenCount, queenList, 0)