day30学习内容
day30主要内容
- N皇后
- 解数独
声明
本文思路和文字,引用自《代码随想录》
一、非递减子序列
1.1、思路
N皇后问题是一种经典的回溯算法问题。在一个N*N的棋盘上放置N个皇后,要求任何两个皇后不能在同一行、同一列或同一斜线上。这个问题的解决方案依赖于尝试和错误的方法,逐步构建解决方案并在遇到无法继续时回退。
解题思路分为以下几个步骤:
-
初始化棋盘:创建一个N*N的棋盘,用二维数组表示。可以用0和1表示棋盘上的空位和皇后的位置,或者使用一个一维数组,其中索引表示行号,值表示皇后所在的列号。
-
选择一个位置放置皇后:从第一行开始,尝试在每一列中放置一个皇后。
-
检查冲突:在放置每个皇后时,需要检查当前位置是否与已放置的皇后冲突。检查同一行(实际上不需要,因为每行只放一个皇后)、同一列、两个对角线是否有其他皇后。
-
回溯:如果当前位置放置皇后会导致冲突,那么回退到上一个皇后,移动到下一个位置。如果已经尝试了当前行的所有位置,仍然无法放置皇后,则回溯到上一行。
-
找到解决方案:当成功在每一行放置了皇后,并且没有冲突时,即找到了一个解决方案。记录或打印出棋盘的布局。
-
寻找所有解决方案:找到一个解决方案后,回溯并改变上一个皇后的位置,继续搜索可能的解决方案。
1.2、代码-略
二、解数独
2.1、思路
2.2、正确写法1
总结
1.感想
- 战略性放弃的一天。。
2.思维导图
本文思路引用自代码随想录,感谢代码随想录作者。