, Если мы следуем за физикой, как указано, нет никакой максимальной скорости. С чисто физической точки зрения Вы зафиксировали ускорение в постоянной величине, что означает, что скорость всегда увеличивается.
Как альтернатива, рассмотрите две силы, действующие на Ваш объект:
, Таким образом, скорость при повторении n
становится: vn = v0 + n F - dvn-1
Вы попросили выбирать максимальную скорость, vnmax, который происходит при повторении nmax
.
Примечание, что проблема под-ограниченным ; то есть, F и d связан, таким образом, можно произвольно выбрать значение для одного из них, затем вычислить другой.
Теперь, когда прокрутка шара, действительно ли кто-либо готов взять математику?
Предупреждение: это ужасно и включает степенной ряд !
Редактирование: Почему самка, последовательность n**F**
в первом уравнении появляется буквально, если нет пространство после n
?
This gives you next permutation:
bool Increase(int[] values) {
// locate the last item which is smaller than the following item
int pos = values.Length - 2;
while (pos >= 0 && values[pos] > values[pos + 1]) pos--;
// if not found we are done
if (pos == -1) return false;
// locate the item next higher in value
int pos2 = values.Length - 1;
while (values[pos2] < values[pos]) pos2--;
// put the higher value in that position
int temp = values[pos];
values[pos] = values[pos2];
values[pos2] = temp;
// reverse the values to the right
Array.Reverse(values, pos + 1, values.Length - pos - 1);
return true;
}
Edit:
Changed Array.Sort to Array.Reverse. The items are always in descending order and should be in ascending order, so they give the same result.
Похоже, вы хотите сгенерировать перестановок вашего списка в лексическом порядке . Эти условия поиска должны начать вас на полезном пути.
Например, Python включает их в модуль itertools , начиная с версии 2.6. В этой документации показан код, реализующий такой алгоритм.