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

3101: N皇后

Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge
Submit: 70  Solved: 32
[Submit][Status]

Description

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

Input

一个数n

Output

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

Sample Input

4

Sample Output

2
4
1
3

HINT

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

Source

题解:http://blog.csdn.net/nike0good/article/details/41006705

 1 #include<cstring>
 2 #include<cmath>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cstdio>
 6
 7 using namespace std;
 8
 9 int n;
10
11 int main()
12 {
13     scanf("%d",&n);
14     if (n%6!=2&&n%6!=3)
15     {
16         for (int i=2;i<=n;i+=2)
17             printf("%d\n",i);
18         for (int i=1;i<=n;i+=2)
19             printf("%d\n",i);
20     }
21     else
22     {
23         int k=n>>1;
24         if (k&1)
25         {
26             for (int i=k;i<=n-1;i+=2)
27                 printf("%d\n",i);
28             for (int i=1;i<=k-1;i+=2)
29                 printf("%d\n",i);
30             for (int i=k+3;i<=n;i+=2)
31                 printf("%d\n",i);
32             for (int i=2;i<=k+1;i+=2)
33                 printf("%d\n",i);
34         }
35         else
36         {
37             for (int i=k;i<=n;i+=2)
38                 printf("%d\n",i);
39             for (int i=2;i<=k-1;i+=2)
40                 printf("%d\n",i);
41             for (int i=k+3;i<=n-1;i+=2)
42                 printf("%d\n",i);
43             for (int i=1;i<=k+1;i+=2)
44                 printf("%d\n",i);
45         }
46         if (n&1)printf("%d\n",n);
47     }
48 } 

原文地址:https://www.cnblogs.com/fengzhiyuan/p/8326175.html

时间: 2024-10-10 08:07:05

bzoj 3101 N皇后构造一种解 数学的相关文章

BZOJ 3101(N皇后-N皇后O(n)构造一组解的方法)

3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 70  Solved: 32 [Submit][Status] Description n*n的棋盘,在上面摆下n个皇后,使其两两间不能相互攻击- Input 一个数n Output 第i行表示在第i行第几列放置皇后 Sample Input 4 Sample Output 2 4 1 3 HINT 100%的数据3<n<1000000.输出

3101: N皇后

3101: N皇后 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 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<100

[Wikioi 1295]N皇后问题---两种不同的解法(复习)

题目描述 Description 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上. 输入描述 Input Description 给定棋盘的大小n (n ≤ 13) 输出描述 Output Description 输出整数表示有多少种放置方法. 样例输入 Sample Input 8 样例输出 Sample Output 92 数据范围

编程之美-小飞的电梯调度算法另一种解

放暑假了,在家闲着也是闲着,翻一翻去年买的<编程之美>这本书,有一些收获.昨天看到小飞的电梯调度算法这个问题,思考一番,得到了和书中给出的标准答案不一样的解决方法. 一.问题描述: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯在每层都停.实习生小飞常常会被每层都停的电梯弄得很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客

经典回溯算法(八皇后问题)详解

八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出: 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上 (斜率为1),问有多少种摆法.高斯认为有76种方案. 1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果. 计算机发明后,有多种方法可以解决此问题. 算法思路:    首先我们分析一下问题的解,我们每取出一个皇后,放入一行,共有八种不同的放法

八皇后问题-回溯法解

八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. int g_number = 0;? //多少种摆放方法?void EightQueen(){? ?const int queens = 8;? //棋盘大小?? ?int ColumnIndex[queens];? //列索引?//遍历行? ?for(int i = 0; i < queens; ++ i)?? ? ? ?ColumnIndex[i] = i;

C 语言构造hash table 解 LC majority element问题

Leetcode上 majority element这题是 有 时间O(N), 空间O(1)的解的. https://leetcode.com/problems/majority-element/ 用hash table来解则为 时间O(N), 空间O(N). 如果是Java里 用HashMap很方便了. 有位同学问怎么用c语言来构造hash table. 我就随手写了一个: typedef struct Node { int val, count; } Node; typedef struct

构造矩阵来解数列递推问题

转自某大牛. Fibonacci数列:F(0)=1 , F(1)=1 , F(n)=F(n-1)+F(n-2) 我们以前快速求Fibonacci数列第n项的方法是 构造常系数矩阵 (一)   Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项快速求法(不考虑高精度) 解法: 考虑1×2的矩阵[f[n-2],f[n-1]].根据Fibonacci数列的递推关系,我们可以通过乘以一个2×2的矩阵A,得到矩阵:[f[n-1],f[n]]. 即:[f[n-2],f

linux下的三种解压文件的命令?

那要看你的压缩文件使用哪种压缩方式:gzip,压缩文件名:zip或gz,解压命令:unzipbzip2,压缩文件名:bz,解压命令:bzip2 -d上面两个是最常用的压缩方式,一般在linux下可以通过tar命令实现打包和压缩(或解压).例如:tar -zcvf file file.tar.gz打包并压缩成gzip格式,其中-c命令是创建tar包,-z参数是指定压缩成gzip格式:tar -zxvf file.tar.gz解包命令,其中-x是解包命令,-z指定解压缩格式是gziptar -jcv