请教个算法,100分 排列前P1 G1P2 G2P3 G3P4 G2P5 G2P6 G4G1相同的P尽量不相邻,如何写呢,有没有最优算法呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 List sortedByGlist = ......//首先按G进行排序,并将排序后的对存放到一个列表中LinkedList linkedList = new LinkedList(sortedByGList);//创建一个链表int counter = Math.round(Math.floor(listkedList.size()/2));for (int i=0; i<counter; i++) { linkedList.add((i*2+1), listedList.last()); linkedList.removeLast();}//到目前为止的linkedList即是你所需要的 listedList.last() 不是linklist的方法呀 P1 G1P2 G1P3 G2P4 G2P5 G3P6 G3排列后P1 G1P6 G3P2 G1P5 G3P3 G2P4 G2通过二分法得到不是最优的啊。 1、先将G序列排序,顺序放在一个HashMap中2、新建一个HashMap假设为map以保存新的数组,从第1个数开始,前一个与后一个进行比较,如果前后不同,则将前一个加入到新的数组;如果相同,则将前一个加到另一个新的数组假设为map_tmp保存,直到全部比较结束。3、在map数组进行如步骤2中的比较,因为G有序,所以map与map_tmp应该也有序(在这里无序也不要紧了),从map_tmp中第一个元素开始,与map中第一个及后一个元素比较,如果均不相同,则将该值插入中间,直至结尾。4、最后,map应该就是你需要的其中第二步就是为了提高工作效率,先将不重复的选取出来 不懂楼主的意思。。me too 同意~bitou(大鹏一日同风起,扶摇直上九万里)的建议也就是说先把相同的放在一起然后在相同的的对象中间加入不同的对象也就起到了分割相同对象的目的 请教大家一个简单的组合题 进来看看JAVA7特性 隐马尔可夫模型 年关了, 大家来谈谈看好哪些行业? 把类做为参数 请教,jPanel中添加鼠标监听问题?? 对于一个大的文本文件,我想读取其中指定行的数据,该如何做? 3个很初级的问题! 一个JAVA程序员在学习C#中的体会 请教JB中资源是怎么回事情? 请教,怎么从JPanel里采集点的坐标,输出到记事本中 跨平台POS软件客户端可否选用java?
int counter = Math.round(Math.floor(listkedList.size()/2));for (int i=0; i<counter; i++) {
linkedList.add((i*2+1), listedList.last());
linkedList.removeLast();
}//到目前为止的linkedList即是你所需要的
P2 G1
P3 G2
P4 G2
P5 G3
P6 G3
排列后
P1 G1
P6 G3
P2 G1
P5 G3
P3 G2
P4 G2
通过二分法得到不是最优的啊。
2、新建一个HashMap假设为map以保存新的数组,从第1个数开始,前一个与后一个进行比较,如果前后不同,则将前一个加入到新的数组;如果相同,则将前一个加到另一个新的数组假设为map_tmp保存,直到全部比较结束。
3、在map数组进行如步骤2中的比较,因为G有序,所以map与map_tmp应该也有序(在这里无序也不要紧了),从map_tmp中第一个元素开始,与map中第一个及后一个元素比较,如果均不相同,则将该值插入中间,直至结尾。
4、最后,map应该就是你需要的其中第二步就是为了提高工作效率,先将不重复的选取出来