在一个数组中,数组结构如下:data0 data1 data2 data3 data4 data5 data6 data7a0001F16 978855 978853 1.11E+07 2.09E+07 9827750 10 9.83E+06
a0001F16 978856 978854 2.09E+07 1.11E+07 9827869 10 -9.83E+06
a0001F21 293103 293102 9225310 9226035 725 04 7.25E+02
a0001F21 978864 978863 1.11E+07 1.11E+07 725 10 7.25E+02
a0001G21 293239 293238 9247787 9226035 21752 04 -2.18E+04
a0001G21 978970 978968 2.09E+07 2.29E+07 1963871 10 1.96E+06
a0001G21 978971 978969 1.11E+07 1.11E+07 21948 10 -2.19E+04
a0001K06 1760 1759 3.53E+07 3.53E+07 796 01 -7.96E+02
a0001K06 120779 120778 1.50E+07 1.50E+07 575 02 5.75E+02
a0001K06 293726 293725 9247877 9248595 718 04 7.18E+02
a0001K06 979249 979247 2.09E+07 2.09E+07 934 10 -9.34E+02
a0001K06 979250 979248 1.11E+07 1.11E+07 575 10 5.75E+02
a0001M11 294021 294020 9173009 1.37E+07 4482711 04 4.48E+06
a0001M11 979422 979419 2.09E+07 2.09E+07 16054 10 -1.61E+04
a0001M11 979421 979420 1.11E+07 1.11E+07 15578 10 1.56E+04
a0001O15 979641 979638 1.11E+07 1.10E+07 57292 10 -5.73E+04
a0001O15 979642 979639 2.09E+07 2.09E+07 13803 10 -1.38E+04
a0001O15 979642 979640 2.09E+07 1.12E+07 9767035 10 -9.77E+06
a0001P23 294471 294470 1.37E+07 9226035 4429685 04 -4.43E+06
a0001P23 569825 569824 1.28E+07 4004990 8810299 06 -8.81E+06
a0001P23 979729 979727 2.09E+07 2.29E+07 1983262 10 1.98E+06
a0001P23 979730 979728 1.11E+07 1.11E+07 40670 10 -4.07E+04
a0002A03 2349 2347 3.53E+07 3.53E+07 570 01 5.70E+02
a0002A03 2350 2348 3.53E+07 3.53E+07 695 01 -6.95E+02
a0002A03 569828 569827 1.28E+07 1.28E+07 570 06 5.70E+02
a0002A03 979733 979731 2.09E+07 2.09E+07 570 10 5.70E+02
a0002A03 979734 979732 1.11E+07 1.11E+07 683 10 -6.83E+02
a0002A03 1153762 1153761 1.13E+07 1.13E+07 683 12 -6.83E+02
a0002A03 1153763 1153761 5607968 1.13E+07 5676261 12 5.68E+06
......
......
......现在想从这些数据中找出满足条件的行的组合.
需满足的条件如下:
1.每个行的组合中,所包含的data0列的标号不能有任意两个是相同的,如不能出现两个a0001F16;
2.每个行的组合中的行的数目是不固定的;
3.每个行的组合中的data6列必需是一样的;
4.每个行的组合中的data3列中所有的数据的最大值减去data4列中所有的数据的最小值小于某一个设定范围region,比如20000;
5.每个行的组合中的data4列中所有的数据的最大值减去data3列中所有的数据的最小值小于某一个设定范围region,同4的region;
6.找出所有这些组合中行数最多一组;
然后再将行数最多一组存入一个新的数组中由于数据很多,需找一个高效的算法,并保证没有组合查找的遗漏,请高手指点;
请在指点时写上所建意算法的思路,谢谢!
解决方案 »
- 四川那些服务器代理商靠谱点,而且质量好点的。。经常接触这方面的朋友进来给点意见
- 如何把这些图片画到JPanel上?
- 有两个不同时区的Calendar对象,如何计算它们之间的时间差。
- 请教一个servlet的问题
- 关于tomcat的ssl配置的问题
- 请问有关判断日期格式的问题,在线等,急!!
- 新手提问!怎么我安装j2sdk-1_4_2-windows-i586-iftw.exe 要好长时间呀 快一个小时了!
- JAVA初学问题请帮忙看一下
- 簡單卻很急的問題!!可給分太少,以後補給.
- 关于borland appserver里的那个idl2java.exe
- 关于多线程的一点问题
- 【求助】JAVA基础的一个小问题
for(循环list){
for(循环数组即list.get(i)){
if(不满足条件4或者不满足条件5){
list.remove(i);
}
}
}//缩小范围
按条件6分组a,按条件1分组b,求ab交集中个数最多的。楼下继续... ...
1 条件3:
遍历数组一次,将data[i][6]的值和每个值出现的次数存入一个map的key和value,比较key的次数是n次;
从map中比较得出value最大的key值,比较key的次数<n;
将data[i][6]=key的data[8]数组存入List,操作次数<n;2 条件1
遍历List一次,将data[0]的值存入一个set,比较下一个data[0]的值和set中的值,重复的删除,操作次数<2n;3 条件4和5
关键在这两个条件,呵呵,本人也只想的这儿了。