
基本思路:每行进行全排列,与前面的字典序全排列的一个不同就是这里的visited[][]数组要开成二维的,一个Visited[row][i]记录行里面的用过的数,另外一个Visited[i][col]用来记录列里面,确保无重复。同时,边界多了一种列到边界行没到的情况,这时候要继续traceback,只是列参数变为0,行参数+1。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int m, n;
int count=0;
int a[100][100];
int visited[100][100];
int visited1[100][100];
int ok(int i, int j)
{
int</

本文介绍了如何使用回溯法和记忆化搜索解决拉丁矩阵问题。每行进行全排列,并通过二维visited数组避免重复,保证行与列的唯一性。在遇到边界条件时,如列满但行未满,会回溯到新行继续尝试。
最低0.47元/天 解锁文章
2356

被折叠的 条评论
为什么被折叠?



