代码如下:(改自八皇后问题)

  1. board=[[0,0,0,0,0,0,0,0],
  2. [0,0,0,0,0,0,0,0],
  3. [0,0,0,0,0,0,0,0],
  4. [0,0,0,0,0,0,0,0],
  5. [0,0,0,0,0,0,0,0],
  6. [0,0,0,0,0,0,0,0],
  7. [0,0,0,0,0,0,0,0],
  8. [0,0,0,0,0,0,0,0]]
  9. data=[]
  10. for i in range(8):
  11. x=[]
  12. x=list(map(int,input().split()))
  13. data.append(x)
  14. max1=0
  15. def can_put(x,y):
  16. #1.判断x行是否有皇后
  17. for i in range(0,y):
  18. if board[x][i]==1:
  19. return False
  20. #2.判断y列是否有皇后
  21. for i in range(0,x):
  22. if board[i][y]==1:
  23. return False
  24. #3.判断/方向是否有皇后
  25. for i in range(0,x):
  26. if x+y-i<=7 and board[i][x+y-i]==1:
  27. return False
  28. #4.判断\方向是否有皇后
  29. #enumerate为执行循环次数,从0开始,index为他的值
  30. for index,i in enumerate(range(x-1,-1,-1)):
  31. if y-index-1>=0 and board[i][y-index-1]==1:
  32. return False
  33. return True
  34. def put_queen(step):
  35. if step==8:
  36. js()
  37. else:
  38. for i in range(8):
  39. if can_put(step,i)==True:
  40. #1.布置现场
  41. board[step][i]=1
  42. #2.开始递归
  43. put_queen(step+1)
  44. #3.恢复现场
  45. board[step][i]=0
  46. def js():
  47. global max1
  48. s=0
  49. for i in range(8):
  50. for j in range(8):
  51. if board[i][j]==1:
  52. s=s+data[i][j]
  53. if s>max1:
  54. max1=s
  55. put_queen(0)
  56. print(max1)

套用了八皇后的模板,稍加改动即可。

点赞(0)
 

9 分

2 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论