设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: RyanBern
打印 上一主题 下一主题

[讨论] R考场(第二期)活动结果&&你对XP区考场的看法

[复制链接]

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

11
 楼主| 发表于 2014-10-25 10:58:11 | 只看该作者
应大家的要求,已经做出了附加题的答案,可以参考一下。
@繁星千羽
@zaiy2863
我想说的是附加题的代码都好短啊有木有,实际上也不是特别难呢~
RUBY 代码复制
  1. #=============================================================================
  2. # A题思路:
  3. #-----------------------------------------------------------------------------
  4. # 其实可以使用下面的方法进行。
  5. # output = 0
  6. # for x1 in 0..10
  7. #   for x2 in 0..10
  8. #     for x3 in 0..10
  9. #       for x4 in 0..10
  10. #         for x5 in 0..10
  11. #           for x6 in 0..10
  12. #             for x7 in 0..10
  13. #               for x8 in 0..10
  14. #                 for x9 in 0..10
  15. #                   for x10 in 0..10
  16. #                     if x1+x2+x3+x4+x5+x6+x7+x8+x9+x10 == m
  17. #                       output += 1
  18. #                     end
  19. #                   end
  20. #                 end
  21. #               end
  22. #             end
  23. #           end
  24. #         end
  25. #       end
  26. #     end
  27. #   end
  28. # end
  29. # p output
  30. #-----------------------------------------------------------------------------
  31. # 只写了10支箭的时候,作死向穷举已经把人累得要死了。
  32. # 所以大家不要学习这样的行为。
  33. #-----------------------------------------------------------------------------
  34. # 真·A题思路:
  35. #-----------------------------------------------------------------------------
  36. # 考虑20支箭中最后一箭的成绩,有可能是0到10中间的任何一个。如果这支箭的成绩被
  37. # 确定下来之后,那么我们只需要考虑19支箭所达到的成绩的方式了。
  38. # 所以,仔细想想,下面的关系是成立的。
  39. # 如果用F(n,m)表示用n支箭共射中m环的组合数量,那么应该有:
  40. # F(n,m) = F(n-1,m) + F(n-1,m-1) + ... + F(n-1, m-10)
  41. # 这个就是我们的递推公式,有了它我们就可以写我们的程序了。
  42. # 下面是一个递归算法,如果大家不熟悉递归算法的话,可以改成DP算法,不过那样的
  43. # 话貌似比较浪费内存。
  44. #=============================================================================
  45. module Teijal_Ex1
  46.   def self.solve(n,m)
  47.     if n * 10 < m || m < 0
  48.       return 0
  49.     end
  50.     if m == 0
  51.       return 1
  52.     end
  53.     output = 0
  54.     for i in 0..10
  55.       output += self.solve(n-1, m-i)
  56.     end
  57.     return output
  58.   end
  59. end
  60.  
  61. #=============================================================================
  62. # B题思路:
  63. #-----------------------------------------------------------------------------
  64. # 对于第一只飞来的乌鸦,Te'ijal有两种选择:射击它或者放过它。但是不知道那种选
  65. # 择会带来更好的结果。因此,她必须在两种方法直接进行比较。
  66. # 如果用F(arr)表示当乌鸦的高度分别为arr时(arr是一个数组),Te'ijal最多能击中
  67. # 乌鸦数目。
  68. # 那么应该有:
  69. # F(arr) = [F(arr.shift), 1 + F(arr')].max
  70. # 其中arr.shift表示arr去掉arr[0]之后的数组。(这是放过第一只乌鸦的情况)
  71. # arr'表示去掉arr[0]以及小于它的数字所生成的新数组。(这是射击第一只乌鸦的情况)
  72. #=============================================================================
  73. module Teijal_Ex2
  74.   def self.solve(arr)
  75.     if arr.empty?
  76.       return 0
  77.     end
  78.     a0 = arr.shift
  79.     arr_cpy = arr.reject{|i| i < a0}
  80.     return [self.solve(arr), 1 + self.solve(arr_cpy)].max
  81.   end
  82. end

点评

感谢~!(要是能塞糖就好了。  发表于 2014-10-25 14:30
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
12
发表于 2014-10-25 18:30:17 | 只看该作者
本帖最后由 无脑之人 于 2014-10-25 18:32 编辑

诶 又有算法题么 快拿来做做【泥垢
不过好⑨没看算法可能要跪了【




啊 原来LS就是答案
话说怎么都是动规题啊【

点评

你可以哪天出个题让他写个数据结构【【【ruby手撸红黑树hhhhhh  发表于 2014-10-26 14:21
我也不知道为什么都是动规啊,不过这两个应该是动规里面比较简单的题吧  发表于 2014-10-25 19:17
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-14 09:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表