棋盘覆盖问题代码java 棋盘覆盖问题算法分析

求8x8棋盘完美覆盖的算法?

如果用1*2覆盖的话

创新互联服务项目包括山南网站建设、山南网站制作、山南网页制作以及山南网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,山南网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到山南省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

任意一块骨牌在棋盘上的摆放都可以用一串长度为64的0、1序列来表示,比如

11000000000000000000000000000000000……0——表示在棋盘最左上角的位置横着摆上一块骨牌。

考虑到骨牌既可以横着摆也可以竖着摆,一块骨牌在棋盘上的摆放共有2*7*8=112种情况.

这样就可以得到一个112*60大小的矩阵,不妨将该矩阵记为A。矩阵中的元素由0和1组成,矩阵中的每一行都有且只有两个1。

于是上述问题,就转换成怎样从矩阵中找出32行,抽取出来的这32行构成的新的32*60的矩阵,如果能满足每列中有且只有一个1,那么它就是一个完美覆盖。

矩阵的算法如下:

如果矩阵A为空且已经选出了32行,则找到一个完美覆盖,成功返回;

否则选取一个列c,如果c列中不存在1的话,不成功返回;

选择C列中每一个满足A[r,c]=1的行r;

将r值作为解决方案的一个步骤记录下来;

对于r行中每一个A[r,j]=1的j值,从矩阵A中将第j列删除;

对于j列中每一个A[i,j]=1的i值,从矩阵A中将第i行删除;

将已经缩小的矩阵重复进行上面的运算。

ACM入门学什么

初学者建议购买,《算法竞赛入门经典》 刘汝佳作,十分好,在深入可以是他的另外一本,黑书,《算法艺术与信息学竞赛》。

计划:

ACM的算法(觉得很好,有层次感)POJ上的一些水题(可用来练手和增加自信)

(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)

初期:

一.基本算法:

(1)枚举. (poj1753,poj2965)

(2)贪心(poj1328,poj2109,poj2586)

(3)递归和分治法.

(4)递推.

(5)构造法.(poj3295)

(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)

二.图算法:

(1)图的深度优先遍历和广度优先遍历.

(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)

(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)

(3)最小生成树算法(prim,kruskal)

(poj1789,poj2485,poj1258,poj3026)

(4)拓扑排序 (poj1094)

(5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020)

(6)最大流的增广路算法(KM算法). (poj1459,poj3436)

三.数据结构.

(1)串 (poj1035,poj3080,poj1936)

(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)

(3)简单并查集的应用.

(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)

(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)

(5)哈夫曼树(poj3253)

(6)堆

(7)trie树(静态建树、动态建树) (poj2513)

四.简单搜索

(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)

(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)

(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)

五.动态规划

(1)背包问题. (poj1837,poj1276)

(2)型如下表的简单DP(可参考lrj的书 page149):

1.E[j]=opt{D[i]+w(i,j)} (poj3267,poj1836,poj1260,poj2533)

2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)

(poj3176,poj1080,poj1159)

3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)

六.数学

(1)组合数学:

1.加法原理和乘法原理.

2.排列组合.

3.递推关系.

(POJ3252,poj1850,poj1019,poj1942)

(2)数论.

1.素数与整除问题

2.进制位.

3.同余模运算.

(poj2635, poj3292,poj1845,poj2115)

(3)计算方法.

1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)

七.计算几何学.

(1)几何公式.

(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)

(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)

(poj1408,poj1584)

(4)凸包. (poj2187,poj1113)

中级:

一.基本算法:

(1)C++的标准模版库的应用. (poj3096,poj3007)

(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)

二.图算法:

(1)差分约束系统的建立和求解. (poj1201,poj2983)

(2)最小费用最大流(poj2516,poj2516,poj2195)

(3)双连通分量(poj2942)

(4)强连通分支及其缩点.(poj2186)

(5)图的割边和割点(poj3352)

(6)最小割模型、网络流规约(poj3308, )

三.数据结构.

(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)

(2)静态二叉检索树. (poj2482,poj2352)

(3)树状树组(poj1195,poj3321)

(4)RMQ. (poj3264,poj3368)

(5)并查集的高级应用. (poj1703,2492)

(6)KMP算法. (poj1961,poj2406)

四.搜索

(1)最优化剪枝和可行性剪枝

(2)搜索的技巧和优化 (poj3411,poj1724)

(3)记忆化搜索(poj3373,poj1691)

五.动态规划

(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)

(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)

(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)

(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)

六.数学

(1)组合数学:

1.容斥原理.

2.抽屉原理.

3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).

4.递推关系和母函数.

(2)数学.

1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)

2.概率问题. (poj3071,poj3440)

3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)

(3)计算方法.

1.0/1分数规划. (poj2976)

2.三分法求解单峰(单谷)的极值.

3.矩阵法(poj3150,poj3422,poj3070)

4.迭代逼近(poj3301)

(4)随机化算法(poj3318,poj2454)

(5)杂题.

(poj1870,poj3296,poj3286,poj1095)

七.计算几何学.

(1)坐标离散化.

(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).

(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)

(3)多边形的内核(半平面交)(poj3130,poj3335)

(4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)

高级:

一.基本算法要求:

(1)代码快速写成,精简但不失风格

(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)

(2)保证正确性和高效性. poj3434

二.图算法:

(1)度限制最小生成树和第K最短路. (poj1639)

(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)

(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446

(3)最优比率生成树. (poj2728)

(4)最小树形图(poj3164)

(5)次小生成树.

(6)无向图、有向图的最小环

三.数据结构.

(1)trie图的建立和应用. (poj2778)

(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法

(RMQ+dfs)).(poj1330)

(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的

目的). (poj2823)

(4)左偏树(可合并堆).

(5)后缀树(非常有用的数据结构,也是赛区考题的热点).

(poj3415,poj3294)

四.搜索

(1)较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)

(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)

(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286)

五.动态规划

(1)需要用数据结构优化的动态规划.

(poj2754,poj3378,poj3017)

(2)四边形不等式理论.

(3)较难的状态DP(poj3133)

六.数学

(1)组合数学.

1.MoBius反演(poj2888,poj2154)

2.偏序关系理论.

(2)博奕论.

1.极大极小过程(poj3317,poj1085)

2.Nim问题.

七.计算几何学.

(1)半平面求交(poj3384,poj2540)

(2)可视图的建立(poj2966)

(3)点集最小圆覆盖.

(4)对踵点(poj2079)

八.综合题.

(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263)gsyagsy 2007-11-29 00:22

以及补充 Dp状态设计与方程总结

1.不完全状态记录

1青蛙过河问题

2利用区间dp

2.背包类问题

1 0-1背包,经典问题

2无限背包,经典问题

3判定性背包问题

4带附属关系的背包问题

5 + -1背包问题

6双背包求最优值

7构造三角形问题

8带上下界限制的背包问题(012背包)

3.线性的动态规划问题

1积木游戏问题

2决斗(判定性问题)

3圆的最大多边形问题

4统计单词个数问题

5棋盘分割

6日程安排问题

7最小逼近问题(求出两数之比最接近某数/两数之和等于某数等等)

8方块消除游戏(某区间可以连续消去求最大效益)

9资源分配问题

10数字三角形问题

11漂亮的打印

12邮局问题与构造答案

13最高积木问题

14两段连续和最大

152次幂和问题

16N个数的最大M段子段和

17交叉最大数问题

4.判定性问题的dp(如判定整除、判定可达性等)

1模K问题的dp

2特殊的模K问题,求最大(最小)模K的数

3变换数问题

5.单调性优化的动态规划

11-SUM问题

22-SUM问题

3序列划分问题(单调队列优化)

6.剖分问题(多边形剖分/石子合并/圆的剖分/乘积最大)

1凸多边形的三角剖分问题

2乘积最大问题

3多边形游戏(多边形边上是操作符,顶点有权值)

4石子合并(N^3/N^2/NLogN各种优化)

7.贪心的动态规划

1最优装载问题

2部分背包问题

3乘船问题

4贪心策略

5双机调度问题Johnson算法

8.状态dp

1牛仔射击问题(博弈类)

2哈密顿路径的状态dp

3两支点天平平衡问题

4一个有向图的最接近二部图

9.树型dp

1完美服务器问题(每个节点有3种状态)

2小胖守皇宫问题

3网络收费问题

4树中漫游问题

5树上的博弈

6树的最大独立集问题

7树的最大平衡值问题

8构造树的最小环

软件设计师考试考点分析与真题详解的目录

比特培训-24期(2017年上)-软件设计师培训课件,免费下载

链接:

提取码:2ocw

比特培训-24期(2017年上)-软件设计师培训课件|00.2015年-2016年试题及解析|14.多媒体和知识产权(2017年下半年-打印版本)-软设.doc|13.网络安全(2017年上半年-打印版本-改革版本).docx|12.数据库打印版本(2017年上格式ok).docx|11.面向对象设计模式--打印版本(2017年上-Java版本-24期).docx|10.UML分析与设计(2017年上-第24期打印版本).doc|09.面向对象及Java实践(2017年上--完整打印版本).docx|08.操作系统原理与技术(打印版本-2017年上-24期).doc|07.常用算法设计方法(2017年上-打印版本--邓少勋--有答案--改革版本).docx|06.计算机体系结构-打印版本(24期-2017年上).docx|05.数据结构(2017年上-打印版本).docx|04.数据流图与数据库分析与设计(2017年上-打印版本).doc|03.程序设计语言基础和编译原理(2017年上半年-打印版本).doc|02.计算机网络概述打印版(2017年上).docx。

NOIP提高组Pascal语言问题

第十三届全国青少年信息学奥林匹克联赛初赛试题

( 普及组 Pascal 语言 二小时完成)

● ● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一、 单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案。)

1. 在以下各项中,( )不是CPU的组成部分。

A.控制器 B.运算器 C.寄存器 D.主板

2.在关系数据库中,存放在数据库中的数据的逻辑结构以( )为主。

A.二叉树 B.多叉树 C.哈希表 D.二维表

3.在下列各项中,只有( )不是计算机存储容量的常用单位。

A.Byte B.KB C.UB D.TB

4.ASCII码的含义是( )。

A.二→十进制转换码 B.美国信息交换标准代码

C.数字的二进制编码 D.计算机可处理字符的唯一编码

5.一个完整的计算机系统应包括( )。

A.系统硬件和系统软件 B.硬件系统和软件系统

C.主机和外部设备 D.主机、键盘、显示器和辅助存储器

6.IT的含义是( )。

A.通信技术 B.信息技术 C.网络技术 D.信息学

7.LAN的含义是( )。

A.因特网 B.局域网 C.广域网 D.城域网

8.冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致。例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是( )。

A.应该在数据库中消除一切冗余数据

B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据

C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验

D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据

9.在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有( )。

A.gcc B.g++ C.Turbo C D.Free Pascal

10.以下断电后仍能保存数据的有( )。

A.硬盘 B.高速缓存 C.显存 D.RAM

11.在下列关于计算机语言的说法中,正确的有( )。

A.高级语言比汇编语言更高级,是因为它的程序的运行效率更高

B.随着Pascal、C等高级语言的出现,机器语言和汇编语言已经退出了历史舞台

C.高级语言比汇编语言程序更容易从一种计算机上移植到另一种计算机上

D.C是一种面向对象的高级计算机语言

12.近20年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。在下列关于递归算法的说法中,正确的是( )。

A.在1977年前后形成标准的计算机高级语言“FORTRAN77”禁止在程序使用递归,原因之一是该方法可能会占用更多的内存空间

B.和非递归算法相比,解决同一个问题,递归算法一般运行得更快一些

C.对于较复杂的问题,用递归方式编程一般比非递归方式更难一些

D.对于已经定义好的标准数学函数 sin(x),应用程序中的语句“y=sin(sin(x));”就是一种递归调用

13.一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句“while(1) printf(“*”);”就是一个死循环,运行时它将无休止地打印*号。下面关于死循环的说法中,只有( )是正确的。

A.不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检查

B.有些编译系统可以检测出死循环

C.死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环

D.死循环与多进程中出现的“死锁”差不多,而死锁是可以检测的,因而,死循环也可以检测的

14.在Pascal语言中,表达式 (23 or 2 xor 5)的值是( )。

A.18 B.1 C.23 D.32

15.在Pascal语言中,判断整数a等于0或b等于0或c等于0的正确的条件表达式是( )。

A.not ((a0) or (b0) or (c0))

B.not ((a0) and (b0) and (c0))

C.not ((a=0) and (b=0)) or (c0)

D.(a=0) and (b=0) and (c=0)

16.地面上有标号为A、B、C的三根柱,在A柱上放有10个直径相同中间有孔的圆盘,从上到下依次编号为1,2,3……,将A柱上的部分盘子经过B柱移入C柱,也可以在B柱上暂存。如果B柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么,在C柱上,从下到上的编号为( )。

A.2 4 3 6 5 7 B.2 4 1 2 5 7 C.2 4 3 1 7 6 D.2 4 3 6 7 5

17.与十进制数1770对应的八进制数是( )。

A.3350 B.3351 C.3352 D.3540

18.设A=B=True,C=D=False,一下逻辑运算表达式值为假的有( )。

A.(「A∧B)∨(C∧D∨A) B.「(((A∧B)∨C)∧D)

C.A∧(B∨C∨D)∨D D.(A∧(D∨C))∧B

19.(2070)16 + (34)8 的结果是( )。

A.(8332)10 B.(208A)16 C.(100000000110)2 D.(20212)8

20.已知7个节点的二叉树的先根遍历是1 2 4 5 6 3 7(数字为节点的编号,以下同),中根遍历是4 2 6 5 1 7 3,则该二叉树的后根遍历是( )。

A.4 6 5 2 7 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2

二、问题求解(共2题,每题5分,共计10分)。

1、(子集划分)将n个数(1,2,…,n)划分成r个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总数记为S(n,r)。例如,S(4,2)=7,这7种不同的划分方法依次为{(1),(234)},{(2),(134)},{(3),(124)},{(4),(123)},{(12),(34)},{(13),(24)},{(14),(23)}。当n=6,r=3时,S(6,3)=______________。

(提示:先固定一个数,对于其余的5个数考虑S(5,3)与S(5,2),再分这两种情况对原固定的数进行分析。)

2、(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有7条南北向的纵街,5条东西向的横街。现要从西南角的A走到东北角的B,最短的走法共有多少种?___________

(图画不了)

三、阅读程序写结果(共4题,每题8分,共计32分。)

1、program j301;

var i,a,b,c,x,y:integer;

p:array[0..4] of integer;

begin

y:=20;

for i:=0 to 4 do read(p);

readln;

a:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7;

b:=p[0]+p[1] div ((p[2]+p[3]) div p[4]);

c:=p[0]*p[1] div p[2];

x:=a+b-p[(p[3]+3) mod 4];

if (x10)

then y:=y+(b*100-a) div (p[p[4] mod 3]*5)

else

y:=y+20+(b*100-c) div (p[p[4] mod 3]*5);

writeln(x,',',y);

end.

{注:本例中,给定的输入数据可以避免分母为0或数组元素下表越界。}

输入:6 6 5 5 3 输出:______________________

2、program j302;

var a,b:integer;

var x,y:^integer;

procedure fun(a,b:integer);

var k:integer;

begin k:=a; a:=b; b:=k; end;

begin

a:=3; b:=6;

x:=@a; y:=@b;

fun(x^,y^);

writeln(a,',',b);

end.

输出:_______________________________

3、program j303;

var a1:array[1..50] of integer;

var i,j,t,t2,n,n2:integer;

begin

n:=50;

for i:=1 to n do a1:=0;

n2:=round(sqrt(n));

for i:=2 to n2 do

if (a1=0) then

begin

t2:=n div i;

for j:=2 to t2 do a1[i*j]:=1;

end;

t:=0;

for i:=2 to n do

if (a1=0) then

begin

write(i:4); inc(t);

if (t mod 10=0) then writeln;

end;

writeln;

end.

输出:_____________________________________________

_____________________________________________

4、Program j304;

Type str1=string[100];

Str2=string[200];

Var

S1:str1; s2:str2;

Function isalpha(c:char):Boolean;

Var i:integer;

Begin

i:=ord(c);

if ((i=65) and (i=90)) or ((i=97) and (i=122)) then

isalpha:=true

else isalpha:=false;

end;

function isdigit(c:char):Boolean;

var i:integer;

begin

i:=ord(c); if (i=48) and (i=57) then isdigit:=true

else isdigit:=false;

end;

procedure expand(s1:str1;var s2:str2);

var i,j:integer; a,b,c:char;

begin

j:=1; c:=char(1); i:=0;

while (i=ord(s1[0])) do

begin inc(i); c:=s1;

if c='-' then begin {1}

a:=s1[i-1]; b:=s1[i+1];

if (isalpha(a) and isalpha(b)) or (isdigit(a) and isdigit(b)) then begin

dec(j);

while (ord(upcase(a))ord(upcase(s1[i+1]))) do

begin

s2[j]:=a; inc(j); inc(a); end;

end

else

begin s2[j]:=c; inc(j); end;

end{1}

else begin s2[j]:=c; inc(j); end; end; s2[0]:=char(j-2); end;

begin readln(s1); expand(s1,s2); writeln(s2);

end.

输入:wer2345d-h454-82qqq 输出:__________________________

四、完善程序(前4空,每空2.5分,后6空,每空3分,共28分)。

1、(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1终止程序。

请将程序补充完整。

Program j401;

type str1=string[100];

var line:str1; kz:integer;

procedure reverse(var s:str1);

var I,j:integer; t:char;

begin

i:=1; j:=length(s);

while (ij) do begin

t:=s; s:=s[j]; s[j]:=t;

; ;

end;

end;

begin

writeln(‘continue? -1 for end.’);

readln(kz);

while ( )do

begin

readln(line);

;

writeln(line);

writeln(‘continue? -1 for end.’);

readln(kz);

end;

end.

2 2 3 3

2 -1 1 3

4 1 1 5

4 4 5 5

2、(棋盘覆盖问题)在一个2k×2 k个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1的方格),称之为特殊方格。现用L型(占3个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4 k-1)/3。在下表给出的一个覆盖方案中,k=2,相同的3各数字构成一个纸片。

下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。

(图画不了...郁闷)

Program j402;

type arr1=array[1..65] of integer;

arr2=array[1..65] of arr1;

var board:arr2; tile:integer; size,dr,dc:integer;

procedure chessboard(tr,tc:integer; dr,dc:integer; var size:integer);

var t,s:integer;

begin

if (size=1) then ;

t:=tile; inc(tile);

s:=size div 2;

if then chessboard(tr,tc,dr,dc,s) else begin

board[tr+s-1]:=t;

end;

if (drtr+s) and (dc=tc+s) then chessboard(tr,tc+s,dr,dc,s)

else begin board[tr+s-1][tc+s]:=t;

; end;

if (dr=tr+s) and (dctc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin

board[tr+s][tc+s]:=t;

; end;

if (dr=tr+s) and (dc=tc+s) then chessboard(tr+s,tc+s,dr,dc,s)

else begin board[tr+s][tc+s]:=t;

; end;

end;

procedure prt1(n:integer);

var I,j:integer;

begin

for I:=1 to n do begin

for j:=1 to n do write(board[j]:3);

writeln;

end;

end;

begin

writeln(‘input size(4/8/16/64):’);

readln(size); writeln(‘input the position of special block(x,y):’);

readln(dr,dc); board[dr][dc]:=-1;

tile:=1; chessboard(1,1,dr,dc,size); prt1(size);

end.

NOIP2007年普及组(Pascal语言)参考答案与评分标准

一、单项选择题:(每题1.5分)

题号 1 2 3 4 5 6 7 8 9 10

答案 D D C B B B B C C A

题号 11 12 13 14 15 16 17 18 19 20

答案 C A A A B D C D A A

二、问题求解:(每题 5分)

1.90 2.210

三、阅读程序写结果

1. 15, 46(对1个数给4分,无逗号扣1分)

2. 3, 6

3. 2 3 5 7 11 13 17 19 23 29

31 37 41 43 47

4. wer2345defgh45456782qqq

四、完善程序(前4空(①--④),每空2.5分,后6空(⑤--⑩),每空3分)

1.

① inc(i) 或i:=i+1

② dec(j) 或 j:=j-1

③ kz-1

④ reverse(line)

2.

⑤ exit

⑥ (drtr+s)and(dctc+s)

⑦ chessboard(tr,tc,tr+s-1,tc+s-1,s)

⑧ chessboard(tr,tc+s,tr+s-1,tc+s,s)

⑨ chessboard(tr+s,tc,tr+s,tc+s-1,s)

⑩ chessboard(tr+s,tc+s,tr+s,tc+s,s)

貌似我考过了 不难

希望对你能有所帮助。


文章题目:棋盘覆盖问题代码java 棋盘覆盖问题算法分析
分享地址:http://scyanting.com/article/dohsipg.html