eightqueen again
小弟我第一次接触回溯法,花了大半天,才把伪代码翻译成c语言,还不太懂.我现在的问题是为什么 j 必须定义为局部变量,全局变量为什么就错了.全局时,在用他之前不也初始化了吗( for(j=0;j<8;j++) )?还有回溯是深度优先还是广度优先?
#include<stdio.h>
int store[8],line[8],z[15],f[15];
int count;
int i;
void print()
{
int k;
for(k=0;k<8;k++)
printf("%d ",store[k]);
printf("\n");
count++;
}
void try(int i)
{
int j;
for(j=0;j<8;j++)
if(line[j]==0&&f[i+j]==0&&z[i-j+7]==0)
{
line[j]=1;z[i-j+7]=1;f[i+j]=1;store[i]=j;
if(i<7)
try(i+1);
else print();
line[j]=0;z[i-j+7]=0;f[i+j]=0;
}
}
main()
{
try(0);
printf("total:%d",count);
system("pause");
}
#include<stdio.h>
int store[8],line[8],z[15],f[15];
int count;
int i;
void print()
{
int k;
for(k=0;k<8;k++)
printf("%d ",store[k]);
printf("\n");
count++;
}
void try(int i)
{
int j;
for(j=0;j<8;j++)
if(line[j]==0&&f[i+j]==0&&z[i-j+7]==0)
{
line[j]=1;z[i-j+7]=1;f[i+j]=1;store[i]=j;
if(i<7)
try(i+1);
else print();
line[j]=0;z[i-j+7]=0;f[i+j]=0;
}
}
main()
{
try(0);
printf("total:%d",count);
system("pause");
}
...全文
相关推荐
eightqueen
eightqueen源代码!!!详细清晰,条理明确
eightqueen:八皇后拼图等
Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您
eightqueen_八皇后c语言版本_
本文详细介绍了如何使用递归函数解决经典的八皇后问题。通过标志数组记录列和对角线上的占用情况,逐行放置皇后,并在所有皇后放置完毕后打印出一种可能的解。
八皇后问题递归求解C语言版
通过EightQueen函数逐行放置皇后并验证合法性,当找到有效解时调用PrintCol函数输出位置。程序还包含对问题的简介及用户交互功能,最终统计
C#版八皇后求解(带棋盘)问题
当用户点击按钮时,程序会创建一个名为eightQueen的类实例,并调用其outResult方法来显示结果,最终将结果展示在页


