俄罗斯套娃奖品

中兴捧月程序大赛初赛中有一道关于俄罗斯套娃奖品的题目,具体内容如下:

 

伊万洛夫在比武大会上力克群雄,成为新一届“草原雄鹰”,为部落赢得了莫大荣誉。首领决定要重重奖赏,他对伊万洛夫说:“孩子,你是知道的,面前的这片草原,南北向和东西向的道路纵横交错。现在,路口放着纯金打造的俄罗斯娃娃,重量大小不等,重的都能装下轻的。你可以沿着道路飞奔,拾取路口的娃娃,要求是任何时刻必须是一个套娃,装好后就不能再拆开了。注意不要走重复路。”

请你为伊万洛夫规划路线,使得他能够有最大的收获。
Input:  cross.txt
        输入包括多组测试用例;
        每个测试用例开始是一对整数<R, C>,R表示东西向道路数,C表示南北向道路总数;接下来R行,每行包括C个正整数W[r,c] ,分别表示第r条东西向道路与第c条南北向道路交叉处路口放置的俄罗斯娃娃的重量。
Output:
        输出能有最大收获的路径规划。
假设1:
   cross.txt
   2     7
   1     2   13   6   7  12  11
   14   3   4     5   8   9   10
输出:
1 2 3 4 5 6 7 8 9 10 11 12

假设2:
   cross.txt
   5    5
   1   16   15   14   13
   2   17   24   23   12
   3   18   25   22   11
   4   19   20   21   10
   5    6     7     8     9
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

注释:
1)从<0,0>出发;
2)路线不能重复;
3)不要求最后回到出发点。


需要注意,路口处放置的套娃重量可以为0,经过的路口不能过儿不拾。


首先考虑,如果套娃的重量不可以为0 的话,算法相对简单,一种实现方法如下(使用类似于迷宫问题的回溯法可以解决这个问题):


如果可以允许套娃的重量为0 ,即允许某一路口处没有放置套娃,那么需要考虑的情况会多一些,一种实现方法如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值