Codevs P1295 N皇后问题

7 篇文章 0 订阅

Codevs P1295 N皇后问题


题目描述 Description

在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。


输入输出

输入描述 Input Description

给定棋盘的大小n (n ≤ 13)

输出描述 Output Description

输出整数表示有多少种放置方法。


样例 Sample

样例输入 Sample Input

8

样例输出 Sample Output

92


数据范围及提示 Data Size & Hint

n<=13


分析

深搜的经典基础题目。。。


代码如下


program p1295;
var row,column,left,right:array[-50..50] of boolean;
    n:longint;
    ans:int64;
procedure dfs(step:integer);
var k:integer;
begin
 for k:=1 to n do
  if row[k] and column[k] and left[step-k] and right[k+step]
   then
    begin
     row[k]:=false;
     column[k]:=false;
     left[step-k]:=false;
     right[k+step]:=false;
     if step<n
      then dfs(step+1);
     if step=n then ans:=ans+1;
     row[k]:=true;
     column[k]:=true;
     left[step-k]:=true;
     right[k+step]:=true;
    end;
end;

begin
 readln(n);
 fillchar(row,sizeof(row),true);
 fillchar(column,sizeof(column),true);
 fillchar(left,sizeof(left),true);
 fillchar(right,sizeof(right),true);
 ans:=0;
 dfs(1);
 write(ans);
end.

测试结果

运行结果
测试点#1.in 结果:AC 内存使用量: 256kB 时间使用量: 0ms
测试点#2.in 结果:AC 内存使用量: 256kB 时间使用量: 1ms
测试点#3.in 结果:AC 内存使用量: 256kB 时间使用量: 4ms
测试点#4.in 结果:AC 内存使用量: 256kB 时间使用量: 107ms
测试点#5.in 结果:AC 内存使用量: 256kB 时间使用量: 624ms


…担心

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值