这个题有3点要注意的地方。
1、弄清题意,p指行号,从上到下依次是1,2,3...p;q指列号,从左到右依次是A,B,C,D...,字典序输出意思是先按列排序,左边的在前,同一列的按行排序,行号小的在前。
2、递归遇到某个方块的下一步无处可跳时,返回上层之前要把vis矩阵相应位置清零!还有起始位置就是A1,如果A1无解则不需要再遍历别的情况了,直接输出impossible即可。
3、输出的时候记得在每种情况后都有一行空格。。。。。。
代码如下:
#include<iostream>
#include<stack>
using namespace std;
int vis[8][8];
struct loc{
int x,y;
loc(int a,int b){
x=a;y=b;
}
};
stack<loc> que;
void clear_que(){
while(que.size()!=0){
que.pop();
}
}
bool is_full(int map[8][8],int p,int q){
for (int i=0;i<p;i++){
for (int j=0;j<q;j++){
if (map[i][j]==0){
return 0;
}
}
}
return 1;
}
/**************************