• 搜索算法


    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)。

  • 相关阅读:
    反射
    Ajax
    JSP(二)
    JSP
    Servlet(三)
    Servlet(二)
    Servlet
    idea的Tomcat的配置
    使用Idea创建Maven构造的Web工程
    Maven的下载、安装与环境配置
  • 原文地址:https://www.cnblogs.com/Crakme/p/1977927.html
Copyright © 2020-2023  润新知