Problem1皇后问题
题目描述
在一N*N的棋盘中,摆上N个皇后,使其互不攻击,有多少种摆法(皇后攻击同行同列与同斜行的棋子)
输入
输入一行,即整数N(N<=10)
输出
输出一个数,即总方案数
Problem2八数码问题
题目描述
有一个3*3的方阵,其中有8个数,一个方格为空,可以通过移动方格将初始的方阵移动成其他的方阵
输入
输入两个3*3的方阵,即为初始状态与目标状态,0代表空的方格
输出
输出最少的步数使初始方阵转换为目标方阵,如果无解则输出‘No Solution’
Problem3拼图
题目描述
这个拼图游戏要求将一些图形拼成一个正方形,图形的个数从1到5。图形不能旋转,拼的时候不能重叠,拼完后的正方形里面不能有隙。所有给定的图形都要使用。
输入
输入第一行是一个整数n,表示图形的个数,范围从1到5。接下来有n个部分,每个部分的第一行是2个整数i和j,表示下面的i行j列用来描述一个图形。图形用0和1表示,1表示图形占有这个置,0表示不占有,中间没有空格。图形的长与宽都不超过5。根据图形给出的顺序给每个图形编号,从1开始,至多到5。保证数据无多解情况。
输出
如果不能拼成一个正方形,就输出“No solution possible”;否则,输出一种拼的方案:一个正方形的数阵,每个位置上的数字是占有这个位置的图形的编号,中间没有空格。
Problem4质数方阵
题目描述
求一个5*5的方阵,满足如下要求:
(1)每行每列的数字和为s
(2)(1,1)上的数字为t
(3)每个横行竖行斜行所形成的五位数都是质数
给定s,t求满足要求的方阵数
输入
输入一行两个数即s,t
输出
输出第一行为方案数,接下来按序输出所有方案(每个方案件都有一空行)
Problem5埃及分数
题目描述
在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。
如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。
对于一个分数a/b,表示方法有很多种,但是哪种最好呢?
首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。如:
19/45=1/3 + 1/12 + 1/180
19/45=1/3 + 1/15 + 1/45
19/45=1/3 + 1/18 + 1/30,
19/45=1/4 + 1/6 + 1/180
19/45=1/5 + 1/6 + 1/18.
最好的是最后一种,因为1/18比1/180,1/45,1/30,1/180都大。
给出a,b(0〈a〈b〈1000),编程计算最好的表达方式。
输入
输入仅一行,即为N,表示有N组测试数据,每组测试数据为一行包含a,b(0〈a〈b〈1000)。
输出
输出N行,对应每组测试数据,对于每组测试数据输出若干个数,自小到大排列,依次是单位分数的分母。
Problem6字符串变换
题目描述
已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则):
A1$ -> B1$
A2$ -> B2$
规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。
例如:A$='abcd' B$='xyz'
变换规则为:
‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’
则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:
‘abcd’->‘xud’->‘xy’->‘xyz’
共进行了三次变换,使得 A$ 变换为B$。
输入
输入格式如下:
A$ B$
A1$ B1$ \
A2$ B2$ |-> 变换规则
... ... /
所有字符串长度的上限为 20。
输出
输出最短步数,若在10步(包含 10步)以内能将A$变换为B$,则输出最少的变换步数;否则输出"NO ANSWER!"
Problem7聪明的打字员
题目描述
阿兰是某机密部门的打字员,她现在接到一个任务:需要在一天之内输入几百个长度固定为6的密码。当然,她希望输入的过程敲击键盘的总次数越少越好。
不幸的是,出于保密的需要,该部门用于输入密码的键盘是特殊设计的,键盘上没有数字键,而只有以下六个键:Swap0,Swap1,Up, Down, Left, Right,为了说明这6个键的作用,我们先定义录入区的6个位置的编号,从左至右依次为1,2,3,4,5,6。下面列出每个键的作用:
Swap0:按Swap0,光标位置不变,将光标所在位置的数字与录入区的1号位置的数字(左起第一个数字)交换。如果光标已经处在录入区的1号位置,则按Swap0键之后,录入区的数字不变;
Swap1:按Swap1,光标位置不变,将光标所在位置的数字与录入区的6号位置的数字(左起第六个数字)交换。如果光标已经处在录入区的6号位置,则按Swap1键之后,录入区的数字不变;
Up:按Up,光标位置不变,将光标所在位置的数字加1(除非该数字是9)。例如,如果光标所在位置的数字为2,按Up之后,该处的数字变为3;如果该处数字为9,则按Up之后,数字不变,光标位置也不变;
Down:按Down,光标位置不变,将光标所在位置的数字减1(除非该数字是0),如果该处数字为0,则按Down之后,数字不变,光标位置也不变;
Left:按Left,光标左移一个位置,如果光标已经在录入区的1号位置(左起第一个位置)上,则光标不动;
Right:按Right,光标右移一个位置,如果光标已经在录入区的6号位置(左起第六个位置)上,则光标不动。
当然,为了使这样的键盘发挥作用,每次录入密码之前,录入区总会随机出现一个长度为6的初始密码,而且光标固定出现在1号位置上。当巧妙地使用上述六个特殊键之后,可以得到目标密码,这时光标允许停在任何一个位置。
现在,阿兰需要你的帮助,编写一个程序,求出录入一个密码需要的最少的击键次数。
输入
输入一行,含有两个长度为6的数,前者为初始密码,后者为目标密码,两个密码之间用一个空格隔开。
输出
输出仅一行,含有一个正整数,为最少需要的击键次数。
Problem8 01序列
题目描述
求指定长度满足下列要求的序列的个数:
(1)全由01组成
(2)任意一段连续的子串没有连续出现3次(如:010101、001001001就不符合要求)
输入
输入仅一个数,即序列长度
输出
输出仅一个数,即满足要求的序列总数
Problem9生日蛋糕
题目描述
要制作一个体积为N*pi的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。 由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 令Q = S*pi 请编程对给出的N和M,找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。(除Q外,以上所有数据皆为正整数)
输入
输入两行,第一行为N(N <= 10000),表示待制作的蛋糕的体积为N*pi;第二行为M(M <= 20),表示蛋糕的层数为M。
输出
输出仅一行,是一个正整数S(若无解则S=0)。