代码随想录刷题day30|N皇后&解数独


day30学习内容

day30主要内容

  • N皇后
  • 解数独

声明
本文思路和文字,引用自《代码随想录》

一、非递减子序列

51.原题链接

1.1、思路

N皇后问题是一种经典的回溯算法问题。在一个N*N的棋盘上放置N个皇后,要求任何两个皇后不能在同一行、同一列或同一斜线上。这个问题的解决方案依赖于尝试和错误的方法,逐步构建解决方案并在遇到无法继续时回退。

解题思路分为以下几个步骤:

  1. 初始化棋盘:创建一个N*N的棋盘,用二维数组表示。可以用0和1表示棋盘上的空位和皇后的位置,或者使用一个一维数组,其中索引表示行号,值表示皇后所在的列号。

  2. 选择一个位置放置皇后:从第一行开始,尝试在每一列中放置一个皇后。

  3. 检查冲突:在放置每个皇后时,需要检查当前位置是否与已放置的皇后冲突。检查同一行(实际上不需要,因为每行只放一个皇后)、同一列、两个对角线是否有其他皇后。

  4. 回溯:如果当前位置放置皇后会导致冲突,那么回退到上一个皇后,移动到下一个位置。如果已经尝试了当前行的所有位置,仍然无法放置皇后,则回溯到上一行。

  5. 找到解决方案:当成功在每一行放置了皇后,并且没有冲突时,即找到了一个解决方案。记录或打印出棋盘的布局。

  6. 寻找所有解决方案:找到一个解决方案后,回溯并改变上一个皇后的位置,继续搜索可能的解决方案。

1.2、代码-略


二、解数独

37.原题链接

2.1、思路

2.2、正确写法1


总结

1.感想

  • 战略性放弃的一天。。

2.思维导图

本文思路引用自代码随想录,感谢代码随想录作者。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值