我有編號的元件1到N配合到位置上從1開始的數線我也有限制這些元素的列表元素給定的約束之間的最大距離:發現一些
- 元件1在位置1,並且元素N必須位於> =元素N-1的位置。 (即,元素2可以在位置1,元素3在位置7,並且元素4在位置8(但不是位置5))
- 一些元素必須在線上相互間的一定距離內。
- 某些元素必須與其他線上至少有一定的距離。
我的目標是返回一個整數,表示元素1和元素N之間的最大跨度。如果沒有陣容可能,則返回-1,如果元素可以是任意距離,則返回-2。
我給出:
- 元件的數量
- 甲withinArray [] [],其中withinArray [X] [Y] =距離元件x和y必須在就行了。任何零值都不表示沒有限制。
- atLeastArray [] []其中atLeastArray [x] [y] =距離元素x和y必須在行上分開。任何零值都不表示沒有限制。
輸入示例爲:4個元素,withinArray [1] [3] = 10,withinArray [2] [4] = 20,atLeastArray [2] [3] = 3。(所有其他數組值是零)。
此輸入的返回值將是27(位置1處的元件1,元件2在8位,11位元件3,和元件4在位置28)
到目前爲止,我來了這一點:
for (int i = 1; i < n; i++) {
for (int j = 1; j < atLeastArray.length; j++)
if (j == i)
positions[i] = positions[j] - atLeastArray[i][j];
for (int j = 1l j < withinArray.length; j++)
if (j == i)
positions[j] = positions[i] + withinArray[i][j];
}
return positions[n] - positions[1];
這讓我對我所給出的例子正確的答案,但我不覺得有信心它工作在任何情況下,我不知道如何界定的情況下,當它的不可能或者如果元素可以相隔任何距離。
聽起來像線性規劃 – nhahtdh