poj象棋比赛(DP)

描述
你需要从你的棋牌协会中选出30人参加一场团队邀请赛,比赛共30场,15人先手持红,另15人后手持黑.每个人先手和后手的能力值有所不同,现在你需要从你的协会里选出这30人,使得其中15人持红的能力值与另外15人持黑的能力值的总和尽可能大.
关于输入
n行(30<=n<=1000),每行两个正整数,分别表示一个人执红和执黑的能力值.
关于输出
输出一个正整数,表示按最优方案选取时的能力值总和.
例子输入
87 84

66 78

86 94

93 87

72 100

78 63

60 91

77 64

77 91

87 73

69 62

80 68

81 83

74 63

86 68

53 80

59 73

68 70

57 94

93 62

74 80

70 72

88 85

75 99

71 66

77 64

81 92

74 57

71 63

82 97

76 56
思路:本题主要采用动归的思想,开一个三维数组,表示到第n个人有j个执红k个执黑情况下最大的能力值,递归表达式是
a[n+1][j][k] = max{a[n][j][k], a[n][j-1][k]+Contest[n+1][0], a[n][j][k-1]+Contest[n+1][1]}。
实现代码如下:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值