⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 di3.txt

📁 信息学 (计算机) 奥林匹克训练题 (中级部分) 天津师范大学 李学武 编
💻 TXT
📖 第 1 页 / 共 5 页
字号:
          ┖─┸─┸─┸─┸─┸─┸─┚                                         

 移动棋子的条件:                                                                

   (1) 每个格中只准放一个棋子。                                                  

   (2) 任意一个棋子均可移动一格放入空格内。                                      

   (3) 一方的棋子均可跳过另一方的一个棋子进入空格。                              

   (4) 任何棋子不得跳跃两个或两个以上棋子(无论颜色同异)                        

   (5) 任何一个颜色棋子只能向前跳,不准向后跳。                                  

 编程完成有关的移动,并且完成具有2N+1个格子的情形. 其中两种颜色各有N个棋子,且中间为空格.                                                            

                                                                                 

 19. (背包问题) 有 N 件物品 d1,......dN,每件物品重量为 W1,..., WN (Wi>0),每件物品价值为 V1,......VN (Vi>0)。用这N件物品的某个子集填空背包,使得所取物品的总重量<=TOTAL,并设法使得背包中物品的价值尽可能高。               

                                                                                 

 20. (N皇后) 在国际象棋的棋盘上放置N个皇后,使其不能互相攻击,即任意两个皇后不能处在棋盘的同一行,同一列,同一斜线上,试问共有多少种摆法?            

 

 21. 请设计一个程序,由计算机把1.. ̄.8的八个自然数填入图中,使得横、竖、对角任何两个相邻的小方格中的两个数是不连续的。(下图右侧的 4 个图为禁止的情形).                                                                            

            ┌─┐          ┌─┐               ┌─┐                          

            │  │          │4│               │8│                          

        ┌─┼─┼─┐      └─┼─┐       ┌─┼─┘                          

        │  │  │  │          │5│       │7│                              

        ├─┼─┼─┤          └─┘       └─┘                              

        │  │  │  │      ┌─┐                                               

        └─┼─┼─┘      │6│           ┌─┬─┐                          

            │  │          ├─┤           │1│2│                          

            └─┘          │7│           └─┴─┘                          

                            └─┘                                               

                                                                                 

 22. 在一个4*4的小方格(如图所示)中放置8个*号,使得每行每列放且仅放两个*号。                                                                      

          ┌─┬─┬─┬─┐                                                     

          │*│*│  │  │                                                     

          ├─┼─┼─┼─┤                                                     

          │*│  │*│  │                                                     

          ├─┼─┼─┼─┤                                                     

          │  │*│  │*│                                                     

          ├─┼─┼─┼─┤                                                     

          │  │  │*│*│                                                     

          └─┴─┴─┴─┘                                                     

 求出所有的基本解。                                                              

                                                                                 

 23. (覆盖问题) 有边长为N(N为偶数)的正方形,请你用N^2/2个长为2,宽为1的长方形,将它全部覆盖。编程打印出所有覆盖方法。如:N=4                

    ┌─┬──┬─┐            ┌──┬──┐                                   

    │  │    │  │ 1224   │    │    │  1122                         

    │  ├──┤  │            ├──┼──┤                                   

    │  │    │  │ 1334   │    │    │  3344                         

    ├─┼──┼─┤            ├──┼──┤                                   

    │  │    │  │ 5668   │    │    │  5566                         

    │  ├──┤  │            ├──┼──┤                                   

    │  │    │  │ 5778   │    │    │  7788                         

    └─┴──┴─┘            └──┴──┘                                   

                                                                                 

 24. 某地街道把城市分割成矩形方格,每一方格叫作块,某人从家中出发上班,向东要走M块,向北要走N块,(见图)。请设计一个程序,由计算机寻找并打印出所有的上班的路径。                                                              

                                               单位                              

           ┬   ┌─┬─┬─┬─┬─┬─┬─┐                                   

           │   │  │  │  │  │  │  │  │                                   

           │   ├─┼─┼─┼─┼─┼─┼─┤                                   

           ↓   │  │  │  │  │  │  │  │                                   

           N   ├─┼─┼─┼─┼─┼─┼─┤                                   

           ↑   │  │  │  │  │  │  │  │                                   

           │   ├─┼─┼─┼─┼─┼─┼─┤                                   

           │   │  │  │  │  │  │  │  │                                   

           ┴   └─┴─┴─┴─┴─┴─┴─┘                                   

           家   ├─────→M←─────┤                                   

                                                                                 

                                                                                 

 25. (量水) 用存水为M,N升的两个罐子,量出A升水。                             

                                                                                 

 26. (八数码问题) 8个编有数码1 ̄8的滑牌,能在3*3的井字格中滑动。井字格中有一格是空格,用0表示,因而空格周围的数码滑牌都可能滑到空格中去.         

 下图是数码滑牌在井字格中的两种状态:                                            

         ┎─┬─┬─┒                        ┏━┯━┯━┓                    

         ┃2 │8 │3 ┃                        ┃1 │2 │3 ┃                    

         ┠─┼─┼─┨                        ┠─┼─┼─┨                    

         ┃1 │6 │4 ┃     ---->         ┃8 │0 │4 ┃                    

         ┠─┼─┼─┨                        ┠─┼─┼─┨                    

         ┃7 │0 │5 ┃                        ┃7 │6 │5 ┃                    

         ┗━┷━┷━┛                        ┗━┷━┷━┛                    

            初始状态                              目标状态                       

 以左图为初始状态,右图为目标状态,请找出从初始状态到目标状态的滑牌移步序列,具体要求:                                                                  

    (1)输入初始状态和目标状态的数据;                                         

       a、分别用两行输入上述两项数据:                                          

         例:Enter the initial state:2 8 3 1 6 4 7 0 5                           

             Enter the final state:1 2 3 8 0 4 7 6 5                             

       b、对输入数据应有查错和示错功能;                                        

    (2)实现从初始状态到目标状态的转换(如不能实现,程序应输出不能实现的提示信息);                                                                  

    (3)输出结果,每移动一步都必须在屏幕上显示:                                

       a、移动每一步时的序号,最后一步的序号即为移动总步数;                    

       b、每一步移动后以3*3表格形式显示状态。                                

    (4)要求能使移动步数尽可能少;                                             

 

 27. 给出一个有8个格子的表格,除3个格子外,每个格子中可放入一个数字,这些数字取自自然数 1 到 5,放入格子中的数字不得相同,剩余的3个格子是空格(用O表示)。图1是一个放数字与空格的特例。现要求编程实现从初始表格状态变化到目标表格状态。初始状态和目标状态都是可变的(图1,图2所示的状态仅是一个特例),由键盘输入格子中的数字(0 ̄5)。                                

    移动规则:                                                                   

   (1) 每一个数字只可以通过虚线移入相邻空格。如图1中,允许“2”左移入空格,而不能上移进入上面空格。                                                    

   (2) 只允许水平移动或垂直移动,不允许斜移。                                    

   (3) 移动后,该数字原先所在的格子变成空格。                                    

    实现目标:                                                                   

   (1) 输入初始表格状态和目标表格状态的数据。                                    

     ① 分别在一行内输入上述两项数据;                                           

     ② 对输入的数据应有查错和报错功能;                                         

   (2) 实现从初始状态到目标状态的转换(如不能实现也应给出必要的说明)。          

   (3) 显示结果:每移动一步都应在屏幕上有如下信息:                              

     ① 显示每一步移动的序号。所以最后一步的序号就是移动的总步数。               

     ② 显示每一步移动前后的表格状态。                                           

   (4) 以最少的移动步数达到目标。                                                

              ┎─┰─┰─┒                          ┎─┰─┰─┒             

              ┃3┃4┃0┃                          ┃0┃0┃0┃             

          ┎─╂─╂  ╂─╂─┒                  ┎─╂─╂  ╂─╂─┒         

          ┃0  1  0  2  5┃                  ┃1  2  3  4  5┃         

          ┖─┸─┸─┸─┸─┚                  ┖─┸─┸─┸─┸─┚         

                图 10-1                             图 10-2              

                初始状态A                              目标状态B               

                                                                                 

 28. n枚银币 C1,C2,...,Cn, 其中有一块不合格,不合格的银币比正常的要重。现用一天平找出不合格的一块,要求在最坏的情况下,用的天平次数最少。                

                                                                                 

 29. 把一段文章按要求排版。文章的输入方式为:由键盘输入一段以回车符结束的文章(最大长度 2000 个字符)。排版时以单词为基本单位。单词由不含空格的任意字符组成,是长度小于20个字符的串。空格符是分隔单词的唯一字符,在输入时连续的空格符在处理时应先化简为单个空格符。在排版前应先输入,排版后每行的字符数为N,排版后将整理好的文章按行输出。输出时不能将一个完整的单词截断,并要求输出的总行数最小。将每个不足N个字符的行用空格补足,填充空格符的方式有以下三种。                                                              

    1)将填充的空格符置于每行的末尾,并要求每行的起始为单词。                   

    2)将填充的空格符置于每行的开始,并要求每行的末尾为单词。                   

    3)将填充的空格符平均分配在每行中,并保证行的起始和末尾均为单词。           

                                                                                 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -