基本思路:每行进行全排列,与前面的字典序全排列的一个不同就是这里的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)
{