패키지 박스 알고리즘
2670 단어 알고리즘
/**
* 예상 박스 알고리즘
* @return
*/
private Tuple2 calculateFareAndNums(List list,PxChannelPrice price){
if(list==null||list.isEmpty()){
Tuple2.of(BigDecimal.ZERO,0);
}
Collections.sort((List) list, new Comparator() {
@Override
public int compare(BigDecimal o1, BigDecimal o2) {
return o2.compareTo(o1);
}
});
BigDecimal taxSum = BigDecimal.ZERO;//
BigDecimal taxLmt = new BigDecimal(50);//
int bagCnt = 0;//
for (int i = 0;i BigDecimal decimal = list.get(i);
if(decimal.compareTo(taxLmt)>-1){
bagCnt++;
}else {
if(taxSum.add(decimal).compareTo(taxLmt)>-1){
bagCnt++;
taxSum = decimal;
}else{
taxSum = taxSum.add(decimal);
}
}
}
if(taxSum.compareTo(BigDecimal.ZERO)==1){
bagCnt++;
}
return Tuple2.of(new BigDecimal(bagCnt).multiply(price.getInitialWeightPrice()),bagCnt);
}
public class Tuple2 {
private final V1 v1;
private final V2 v2;
public Tuple2(V1 t1, V2 t2) {
this.v1 = t1;
this.v2 = t2;
}
public static Tuple2 of(V1 v1, V2 v2) {
return new Tuple2<>(v1, v2);
}
public V1 _1() {
return v1;
}
public V2 _2() {
return v2;
}
@Override
public String toString() {
return "(" + v1 + "," + v2 + ')';
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Tuple2, ?> tuple2 = (Tuple2, ?>) o;
if (!v1.equals(tuple2.v1))
return false;
return v2.equals(tuple2.v2);
}
@Override
public int hashCode() {
int result = v1.hashCode();
result = 31 * result + v2.hashCode();
return result;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.