预赛试题 复赛试题 决赛试题
第五届全国ITAT教育工程就业技能大赛决赛试题
  Java程序设计
 

  建造冬奥会滑雪场的空中升降轨道。从起点到终点,有若干可选的支架作为固定点,再在相邻固定点间架设导轨。假设所有可选的支架在一条轴线(x轴)上,从起点到终点的x轴间隔为1的每一点上都有一个支架,并给出支架的高度。建造要求如下:

    1.   选择尽可能少的支架建立固定点;
    2.   导轨保持平直,即固定点中间的支架不高于导轨;
    3.   两个相邻固定点之间,沿x轴距离不能超过给定的K;
    4.   第一个(起点)和最后一个(终点)一定是固定点。

测试数据文件说明:
  输入文件skilift.in的内容:
  第一行是N和K,N和K之间以空格分开,2<=N<=5000,1<=K<=N-1。
  接下来N行,按顺序是支架的高度h,0<=h<=1000000000。
  输出文件skilift.out的内容:
  一个整数,表示最少要选择几个固定点,以及选择的固定点序列号。
  样例:
  输入文件:
  13 4
  0
  1
  0
  2
  4
  6
  8
  6
  8
  8
  9
  11
  12
  输出文件:
  6 -- 1、5、7、10、12、13
  如下图所示,至少需要6个固定点,选择第1、5、7、10、12、13个支架作为固定点。
  
  (1)请根据以上要求设计最佳算法,并加以说明;
  (2)编程实现算法,并以样例文件进行测试,输出结果;
  (3)按照下面给定的三个测试数据进行测试,并输出结果。
  测试数据一:
         N=20,K=3
         N行数据(,作为换行提示符):
  0,2,1,3,5,7,4,5,3,8,10,12,11,13,14,15,12,9,20,22
  测试数据二:
         N=18,K=5
         N行数据(,作为换行提示符):
  0,2,1,3,7,6,2,8,10,9,11,12,15,7,4,5,19,21
  测试数据三:
         N=30,K=4
         N行数据(,作为换行提示符):
  0,1,3,5,4,2,3,5,7,8,10,9,12,15,21,20,23,25,22,27,28,29,27,30,22,31,35,36,35,39
  (本题60分,要求1占20分,要求2占10分,要求3占30分)

  1.   设有n个球队要进行排球循环赛,设计一个满足以下要求的比赛日程表:
    1.   每个球队必须与其他n-1个球队各赛一次;
    2.   每个球队一天只能赛一次;
    3.   当n是偶数时,循环赛进行n-1天。当n是奇数时,循环赛进行n天。

  n=6的比赛日程表示例(把6个队从1到6进行编号):
  n=6的比赛日程表


  第一天

第二天

第三天

第四天

第五天

1~2

1~3

1~4

1~5

1~6

3~5

2~4

2~5

2~6

2~3

4~6

5~6

3~6

3~4

4~5

  n=5的比赛日程表示例(增加编号0,凡碰0者该天即轮空):
  n=5的比赛日程表


  第一天

第二天

第三天

第四天

第五天

1~0

1~5

1~4

1~3

1~2

2~5

0~4

5~3

4~2

3~0

3~4

2~3

0~2

5~0

4~5

  (1)请根据以上要求分析问题,设计算法,并加以说明;
  (2)编程实现算法,并以n=10和n=15进行测试,输出结果;
  (3)分析算法的时间复杂度。
  (本题共60分,要求1占20分,要求2占30分,要求3占10分)


  附件: 
 

Copyright © 2006 - 2012 www.itatedu.com All Rights Reserved.