做了好多动态计划的标题,有了一些心得。
public int getanswer(char[][] map,int index,int n) {
if(index==n) {// index==n 则意味的递归停止
/*System.out.println("-------------");
for(int i=0;i<n;i++) {
System.out.println(map[i]);
}//打印一些 可行的排列
System.out.println("--------------");*/
return -1;//返回-1 意味着递归的停止,或 递归失败
}else {
for(int i=0;i<n;i++) {//遍历该次 皇后可行的地位
if(isOk(i, index, map)) {
map[index][i]="Q";
if(getanswer(map, index+1, n)==-1) {//递归返回1 解释该地位符合
map[index][i]="做了好多动态计划的标题,有了一些心得。
public int getanswer(char[][] map,int index,int n) {
if(index==n) {// index==n 则意味的递归停止
/*System.out.println("-------------");
for(int i=0;i<n;i++) {
System.out.println(map[i]);
}//打印一些 可行的排列
System.out.println("--------------");*/
return -1;//返回-1 意味着递归的停止,或 递归失败
}else {
for(int i=0;i<n;i++) {//遍历该次 皇后可行的地位
if(isOk(i, index, map)) {
map[index][i]="Q";
if(getanswer(map, index+1, n)==-1) {//递归返回1 解释该地位符合
map[index][i]="\0";
}
}
}
return -1;//递归失败,返回上一级
}
}
public boolean isOk(int x,int y,char[][] map) {//断定某个点 是不是可以安置
int len=map.length;
for(int i=y-1,j=1;i>=0;i--) {
if(map[i][x]!="\0")return false;
if(x-j>=0&&map[i][x-j]!="\0")return false;
if(x+j<len&&map[i][x+j]!="\0")return false;
j++;
}
return true;
}
总的来讲,八皇后问题就是在不断的递归求解中,尝试可能的情形,假设下一级递归失败,则尝试一下一种情形
";
}
}
}
return -1;//递归失败,返回上一级
}
}
public boolean isOk(int x,int y,char[][] map) {//断定某个点 是不是可以安置
int len=map.length;
for(int i=y-1,j=1;i>=0;i--) {
if(map[i][x]!="做了好多动态计划的标题,有了一些心得。
public int getanswer(char[][] map,int index,int n) {
if(index==n) {// index==n 则意味的递归停止
/*System.out.println("-------------");
for(int i=0;i<n;i++) {
System.out.println(map[i]);
}//打印一些 可行的排列
System.out.println("--------------");*/
return -1;//返回-1 意味着递归的停止,或 递归失败
}else {
for(int i=0;i<n;i++) {//遍历该次 皇后可行的地位
if(isOk(i, index, map)) {
map[index][i]="Q";
if(getanswer(map, index+1, n)==-1) {//递归返回1 解释该地位符合
map[index][i]="\0";
}
}
}
return -1;//递归失败,返回上一级
}
}
public boolean isOk(int x,int y,char[][] map) {//断定某个点 是不是可以安置
int len=map.length;
for(int i=y-1,j=1;i>=0;i--) {
if(map[i][x]!="\0")return false;
if(x-j>=0&&map[i][x-j]!="\0")return false;
if(x+j<len&&map[i][x+j]!="\0")return false;
j++;
}
return true;
}
总的来讲,八皇后问题就是在不断的递归求解中,尝试可能的情形,假设下一级递归失败,则尝试一下一种情形
")return false;
if(x-j>=0&&map[i][x-j]!="做了好多动态计划的标题,有了一些心得。
public int getanswer(char[][] map,int index,int n) {
if(index==n) {// index==n 则意味的递归停止
/*System.out.println("-------------");
for(int i=0;i<n;i++) {
System.out.println(map[i]);
}//打印一些 可行的排列
System.out.println("--------------");*/
return -1;//返回-1 意味着递归的停止,或 递归失败
}else {
for(int i=0;i<n;i++) {//遍历该次 皇后可行的地位
if(isOk(i, index, map)) {
map[index][i]="Q";
if(getanswer(map, index+1, n)==-1) {//递归返回1 解释该地位符合
map[index][i]="\0";
}
}
}
return -1;//递归失败,返回上一级
}
}
public boolean isOk(int x,int y,char[][] map) {//断定某个点 是不是可以安置
int len=map.length;
for(int i=y-1,j=1;i>=0;i--) {
if(map[i][x]!="\0")return false;
if(x-j>=0&&map[i][x-j]!="\0")return false;
if(x+j<len&&map[i][x+j]!="\0")return false;
j++;
}
return true;
}
总的来讲,八皇后问题就是在不断的递归求解中,尝试可能的情形,假设下一级递归失败,则尝试一下一种情形
")return false;
if(x+j<len&&map[i][x+j]!="做了好多动态计划的标题,有了一些心得。
public int getanswer(char[][] map,int index,int n) {
if(index==n) {// index==n 则意味的递归停止
/*System.out.println("-------------");
for(int i=0;i<n;i++) {
System.out.println(map[i]);
}//打印一些 可行的排列
System.out.println("--------------");*/
return -1;//返回-1 意味着递归的停止,或 递归失败
}else {
for(int i=0;i<n;i++) {//遍历该次 皇后可行的地位
if(isOk(i, index, map)) {
map[index][i]="Q";
if(getanswer(map, index+1, n)==-1) {//递归返回1 解释该地位符合
map[index][i]="\0";
}
}
}
return -1;//递归失败,返回上一级
}
}
public boolean isOk(int x,int y,char[][] map) {//断定某个点 是不是可以安置
int len=map.length;
for(int i=y-1,j=1;i>=0;i--) {
if(map[i][x]!="\0")return false;
if(x-j>=0&&map[i][x-j]!="\0")return false;
if(x+j<len&&map[i][x+j]!="\0")return false;
j++;
}
return true;
}
总的来讲,八皇后问题就是在不断的递归求解中,尝试可能的情形,假设下一级递归失败,则尝试一下一种情形
")return false;
j++;
}
return true;
} public int getanswer(char