함수 (f)는 항목 수 (n)와 열 수 (c)를 사용하고 열당 항목 배열로 최적의 레이아웃을 반환합니다. 나는 최적을 가능한 한 정사각형이라고 정의한다. 따라서 f (4,4)는 [4,4,4,4]를 반환하고 f (17,4)는 [5,4,4,4]를 반환하고 f (1,4)는 [1,0 , 0,0]. 내 함수는 모든 테스트에서 올바르게 작동하지만, 변경하려고합니다. 이 작업을 수행하고자하는 열망은 성능 향상을 기대하기 때문이 아닙니다. 저는 단지 실험하고 있기 때문에 다른 기법을 배우기를 원합니다.정수가 1이고 그렇지 않으면 0을내는 수식
함수는 제 COL 당 아이템의 최적의 수를 결정함으로써 동작public static int[] f(int n, int c){
int[] a = new int[c];
if(c>0 && n>=0){
int opt = (n-(n%c))/c;
n = n - (opt*c);
for(int i = 0;i<a.Length;i++){
a[i] = opt;
if(n>0){
a[i]++;
n--;
}
}
}
return a;
}
:
가int opt = (n-(n%c))/c;
그래서 F (17.4) 4를 수득 할, F (여기서
는 코드 19,4)는 또한 4를 산출하고, f (3,4)는 0을 산출합니다. 그러면 알림이 계산됩니다.n = n - (opt*c);
(길이가 c 인) rray를 선택하고 a [i]를 최적 값과 같게 지정하십시오. 마지막으로 알림이 0보다 큰 경우 [i]에 1을 더합니다. 이렇게하면 미리 알림이 배열 전체에 균등하게 분배됩니다. 이것이 내가 바꾸고 싶은 부분입니다. 대신 체크
경우 (N> 0) 및 어레이에 1을 가산 그 I의 모양에 사용할 수있는 화학식있다 : *
a[i] = opt + n*?????;
따라서 n은 ??? n이 0보다 크면 항상 1이고 n이 0 이하이면 0입니다.
이 아마 더 나은 프로그래머 또는 CompSci SE에 운임 것이다. 이외에도, 일반적으로 변수 이름은 * 끔찍한 *입니다. 변수 이름은 반복 변수가 아닌 한 문자가 아닌 설명 적이어야합니다. – BradleyDotNET
@Bradley와 동의하지만 어떤 상황에서는 단일 문자가 람다 인수에 적절하다고 간주 될 수 있습니다. ('x => x.Age> 5'). –
@KirkWoll 예, 다른 예외가 있습니다 (가장 일반적인 사용 사례에서는 its *가 거의 반복 변수 임). – BradleyDotNET