1
I는 같은 간격의 2 개 세트를 가지고숫자가 주어지면 어느 간격에 맞습니까?
xCoords: (0, 60], (60, 120], (120, 180] ...
yCoords: (0, 60], (60, 120], (120, 180] ...
각 구간의 사이즈는 동일하게 보장되는, 그러나
xCoord
간격의 크기는
yCoord
간격의 크기 일 필요는 없다
. (최적화를 위해 필요한 경우 나 일반성에 그 희생을 만들 수 있지만 그것은 미래에 내가 다른 yCoord
및 xCoord
크기를 할 수 있습니다 가능합니다.)
I 등도 준 쌍 :
(x, y)
(0, 60)
(123, 52)
(34, 196)
샘플 위의 답변 :
(lowerBoundX, lowerBoundY)
(0, 60)
(120, 0)
(0, 180)
그들이 속하는 간격을 찾는 가장 적합한 방법은 무엇입니까? 여기에 내가 현재 가지고있는 것입니다 :이 루프의 끝에서
// we'll need to be able to access these outside of the loops
uint minWidth = 0;
uint minHeight = 0;
for (minWidth = 0; minWidth + cellWidth <= xToFind; minWidth += cellWidth) ;
for (minHeight = 0; minHeight + cellHeight <= yToFind; minHeight += cellHeight) ;
, minWidth
는 낮은 x
간격의 경계 나타내며, minHeight
는 낮은 y
간격의 결합이다.
이렇게 빠른 방법을 찾을 수 있습니까? 프로파일 러는 함수의 가장 느린 부분으로 for
루프를 식별합니다. X의 크기가 일정한 경우
이유 때문에 INT/INT = INT, 십진수는 잘립니다. 당신이 약수를 다시 곱하면, 당신은 하한선을 얻습니다. –
정수 부분은 이러한 종류의 많은 루틴을 최적화하는 데 적합합니다. :) - 그러나 셀 크기가 각 단계를 변경하고 상수가 아니라면보다 정교한 알고리즘으로 되돌려 야합니다 (루핑보다 훨씬 좋은 옵션이있을 수 있지만 ...) –