博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 2778 - Triangular N-Queens Problem
阅读量:6696 次
发布时间:2019-06-25

本文共 1826 字,大约阅读时间需要 6 分钟。

题目:在三角形的棋盘上放n皇后问题。

分析:找规律题目。依照题目的输出,能够看出构造法则;

            先填奇数,后填偶数。以下我们仅仅要证明这样的构造的存在性就可以。

            解法:先给出集体构造方法,从(1。n-f(n)+1) 開始填充奇数点;

                      填充全部的(1+2k。n-f(n)+1+k){当中f(n)就是最大填充数。1+2k<=n-f(n)+1+k} 。

                      之后開始从(2。n-f(n)+1+k+1)開始填充偶数点,因为奇数点仅仅能攻击奇数点。

                      偶数点仅仅能攻击偶数点,所以仅仅要保证每行一个皇后就能够了。 

            证明:我们仅仅须要证明从第n-f(n)+1行開始。每行都能够放一个皇后就能够了; 

                      首先。依照上面的构造可知,如此构造。皇后是不能够互相攻击的。

                      然后,因为第i行有i个元素。所以有 1+2k<=n-f(n)+1+k。

                      解得。k <= n-f(n)>= f(n)/2,因此至少有一半是奇数点;

                      偶数点仅仅要插入到奇数点之间就能够构造了。构造成功。 

说明:(2011-09-19 01:28)。

#include 
#include
#include
bool M[ 1001 ][ 1001 ];int F[ 1005 ];int A[ 668 ];int B[ 668 ];int main(){ /* 递推公式 memset( F, 0, sizeof( F ) ); F[ 0 ] = 0;F[ 1 ] = 1;F[ 2 ] = 1; for ( int i = 3 ; i <= 1000 ; ++ i ) F[ i ] = F[ i-3 ] + 2; */ for ( int i = 1 ; i <= 1000 ; ++ i ) F[ i ] = (2*i+1)/3; int c,n; while ( scanf("%d",&c) != EOF ) for ( int t = 1 ; t <= c ; ++ t ) { memset( M, 0, sizeof( M ) ); scanf("%d",&n); printf("%d %d %d\n",t,n,F[ n ]); int y = n-F[ n ]+1; int x = 1; for ( int i = 0 ; i < F[ n ] ; ++ i ) { A[ i ] = y;B[ i ] = x; M[ y ][ x ] = 1; y += 1;x += 2; if ( x > y ) x = 2; } /* 画图部分 for ( int p = 1 ; p <= n ; ++ p ) { for ( int q = 0 ; q < n-p ; ++ q ) printf(" "); for ( int q = 1 ; q <= p ; ++ q ) if ( M[ p ][ q ] ) printf("* "); else printf("@ "); printf("\n"); } */ printf("[%d,%d]",A[ 0 ],B[ 0 ]); for ( int i = 1 ; i < F[ n ] ; ++ i ) { if ( i%8 == 0 ) printf("\n"); else printf(" "); printf("[%d,%d]",A[ i ],B[ i ]); } printf("\n\n"); } return 0; }

转载地址:http://duvoo.baihongyu.com/

你可能感兴趣的文章
Tenegrad评价函数 分类: 图像处理 Open...
查看>>
VS如何连接2种类型的数据库
查看>>
数据事务四种隔离机制和七种传播行为
查看>>
WinForm界面布局空间---WeifenLuo.WinformUI.Docking
查看>>
关于提示表单执行的一些小问题!
查看>>
C#字符串的方法
查看>>
POJ 1274 二分图匹配
查看>>
学习小结(一) —— 基础数据结构
查看>>
WinDbg内核调试命令
查看>>
React文档(十七)非受控组件
查看>>
python中的metaclass
查看>>
大白叔叔专题之匹配、网络流(二)(第一题不是呐~)
查看>>
在centos中使用rpm安装包安装jenkins
查看>>
Linux释放内存空间
查看>>
利用ASP.NET DataGrid显示主次关系的数据
查看>>
关于CachedRowSetImpl类
查看>>
Typora – Markdown 简介
查看>>
qt 免注册下载
查看>>
一致性hash算法实现(伪码)
查看>>
Leetcode 215. Kth Largest Element in an Array
查看>>