永发信息网

n皇后递归算法

答案:2  悬赏:70  手机版
解决时间 2022-01-01 02:44
  • 提问者网友:贪了杯
  • 2021-12-31 13:41
n皇后问题看不懂,是不是n*n的棋盘,不一定有n个皇后啊,递归回溯算法是什么思路。哪位大神指教下
最佳答案
  • 五星知识达人网友:你可爱的野爹
  • 2021-12-31 14:13
就是深搜算法
代码如下:
var ans:array[1..13] of byte;
b,c,d:array[-12..26] of boolean;
n,i,max:longint;
procedure print;
var i:longint;
begin
for i:=1 to n do
write(ans [i] ,' ');
writeln;
end;
procedure gyw(i:integer);
var j:integer;
begin
if i>n then
begin
// print;
inc(max);
end
else for j:=1 to n do
if (b [j] =false)and(c[i+j]=false)and(d[i-j]=false) then
begin
ans [i] :=j;
b [j] :=true;
c[i+j]:=true;
d[i-j]:=true;
gyw(i+1);
b [j] :=false;
c[i+j]:=false;
d[i-j]:=false;
end;
end;
begin
read(n);
gyw(1);
writeln(max);
end.
Pascal的
全部回答
  • 1楼网友:何以畏孤独
  • 2021-12-31 15:11
思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归。 参考代码: #include int fun(int n) { if(n==1||n==0) return 1;//如果参数是0或者1返回1 return n*fun(n-1);//否则返回n和下次递归的积 } int main() { int n; scanf("%d",&n); printf("%d\n",fun(n)); return 0; } 【递归算法的原理】 递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写 递归能使程序变得简洁和清晰。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯