注册 登录
编程论坛 JAVA论坛

求大佬帮忙啊!!Java编程题!!

顺顺顺顺顺顺 发布于 2018-09-19 10:57, 2017 次点击
小Q将军掌管着n名士兵,第i名士兵有一个战斗力vi。

小Q现在要把所有士兵分为三个分队,保证每个士兵都要进入一个分队,每个分队都至少有一名士兵。

每一个分队的战斗力值等于该分队中所有的士兵的战斗力按位异或(xor)起来。

小Q将军希望设计一个士兵分配方案使得三支分队的总战斗力之和最大,希望你能帮帮他、



输入描述:

输入包括两行。

输入的第一行包括一个正整数n(3<=n<=50),表示士兵的人数。

输入的第二行包括n个正整数vi(0<=vi<=255),表示每个士兵的战斗力。



输出描述:

输出一个正整数,表示三支分队的战斗力值最大是多少。
4 回复
#2
林月儿2018-09-23 11:59
这个好像是排列组合题,感觉挺好玩
#3
顺顺顺顺顺顺2018-09-26 15:03
回复 2楼 林月儿
如果按照排列组合的思想去做的话,最多50个士兵分三组就有3的50次方种,这样做复杂度太高了。
#4
林月儿2018-09-26 16:49
不是吧,50分三份。每份大于0
两层判断找到分组方案,根据条件缩小范围
然后根据分组排列,不是什么3的50次方
第一步做了吗?50分三份有多少种情况
第二步各种情况下的组合又有多少?
#5
疯狂的小a2018-09-28 18:56
循环遍历,编码最简单
1