3101: N皇后

Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge
Submit: 88  Solved: 41
[Submit][Status][Discuss]

Description

n*n的棋盘,在上面摆下n个皇后,使其两两间不能相互攻击…

Input

一个数n

Output

第i行表示在第i行第几列放置皇后

Sample Input

4

Sample Output

2
4
1
3

HINT

100%的数据3<n<1000000。输出任意一种合法解即可

Source

题解:一道神(dou)奇(bi)的题目,传说中貌似有种O(N)构造N皇后解的方法,具体为啥貌似也查不到,求神犇给出证明orzorzorz(引自N皇后的构造解法

一、当n mod 6 != 2 或 n mod 6 != 3时,有一个解为:

2,4,6,8,...,n,1,3,5,7,...,n-1       (n为偶数)

2,4,6,8,...,n-1,1,3,5,7,...,n       (n为奇数)

(上面序列第i个数为ai,表示在第i行ai列放一个皇后;... 省略的序列中,相邻两数以2递增。下同)

二、当n mod 6 == 2 或 n mod 6 == 3时,

(当n为偶数,k=n/2;当n为奇数,k=(n-1)/2)

k,k+2,k+4,...,n,2,4,...,k-2,k+3,k+5,...,n-1,1,3,5,...,k+1         (k为偶数,n为偶数)

k,k+2,k+4,...,n-1,2,4,...,k-2,k+3,k+5,...,n-2,1,3,5,...,k+1,n       (k为偶数,n为奇数)

k,k+2,k+4,...,n-1,1,3,5,...,k-2,k+3,...,n,2,4,...,k+1               (k为奇数,n为偶数)

k,k+2,k+4,...,n-2,1,3,5,...,k-2,k+3,...,n-1,2,4,...,k+1,n           (k为奇数,n为奇数)

然后就是码代码了= =

 
 /**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ var
i,j,k,l,m,n:longint;
begin
readln(n);
case n mod of
,:begin
k:=n div ;
case (k mod )+(n mod )* of
:begin
for i:= to (n-k) div do writeln(k+i*);
for i:= to (k-) div do writeln(+i*);
for i:= to (n-k-) div do writeln(k++i*);
for i:= to k div do writeln(+*i);
end;
:begin
for i:= to (n-k-) div do writeln(k+i*);
for i:= to (k-) div do writeln(+i*);
for i:= to (n-k-) div do writeln(k++i*);
for i:= to k div do writeln(+*i);
writeln(n);
end;
:begin
for i:= to (n-k-) div do writeln(k+i*);
for i:= to (k-) div do writeln(+i*);
for i:= to (n-k-) div do writeln(k++i*);
for i:= to (k-) div do writeln(+*i);
end;
:begin
for i:= to (n-k-) div do writeln(k+i*);
for i:= to (k-) div do writeln(+i*);
for i:= to (n-k-) div do writeln(k++i*);
for i:= to (k-) div do writeln(+*i);
writeln(n);
end;
end;
end;
else begin
if odd(n) then
begin
for i:= to (n-) div do writeln(i*);
for i:= to (n+) div do writeln(i*-);
end
else
begin
for i:= to n div do writeln(i*);
for i:= to n div do writeln(i*-);
end;
end;
end;
readln;
end.
 

3101: N皇后的更多相关文章

  1. BZOJ 3101: N皇后

    3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 178  Solved: 94[Submit][ ...

  2. BZOJ 3101: N皇后 构造

    3101: N皇后 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3101 Description n*n的棋盘,在上面摆下n个皇后,使其 ...

  3. bzoj 3101 N皇后构造一种解 数学

    3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 70  Solved: 32[Submit][S ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. 递归实现n(经典的8皇后问题)皇后的问题

    问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...

  6. 八皇后算法的另一种实现(c#版本)

    八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...

  7. [LeetCode] N-Queens II N皇后问题之二

    Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...

  8. [LeetCode] N-Queens N皇后问题

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  9. N皇后问题—初级回溯

    N皇后问题,最基础的回溯问题之一,题意简单N*N的正方形格子上放置N个皇后,任意两个皇后不能出现在同一条直线或者斜线上,求不同N对应的解. 提要:N>13时,数量庞大,初级回溯只能保证在N< ...

随机推荐

  1. ThinkPHP--IS_AJAX

    增加IS_GET,IS_POST,IS_PUT,IS_DELETE,IS_AJAX常量,方便除控制器外的地方判断方法,Action类的isGet isPost等方法暂时保留,但不建议使用.

  2. HibernateTemplate实现查询distinct构造对象

    1,hql代码 select distinct new UserLogins( u.username,u.person,u.accName) from UserLogins u where u.ipA ...

  3. 细说WPF数据绑定

    简单的事例:   <Slider Name="mySlider" Height="28" HorizontalAlignment="Left&q ...

  4. MyBatis 一对多,多对一关联查询的时候Mapper的顺序

    要先写association,然后写collection:这是由DTD决定的: <resultMap ...> <association ...> </associati ...

  5. border-radius是向元素添加圆角边框的方法

    border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角.右上角.右下角和左下 ...

  6. [TPYBoard-Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

  7. php扩展SeasLog应用于 yii2 组件

    一.seaslog 简单介绍及使用原因 它是C 写的PHP扩展,性能很高,使用简单,能满足大部分简单的日志需求.(个人感觉) 其他优势请看-->https://github.com/Neeke/ ...

  8. Swing JComboBox的使用

    1:JComboBox的使用:类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JCom ...

  9. 常用的JQ函数

    /// <reference path="jquery-1.8.0.min.js"> /* * DIV或元素居中 * @return */ jQuery.fn.mCen ...

  10. 通过CXF方式实现webservice服务

    一.CXF的介绍 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 S ...