Скажите, пожалуйста, как я могу применить перестановку и комбинацию в консольном приложении C# и принять значения N и r и вычислить перестановку и комбинацию.Перестановка и комбинация в C#
ответ
Я просто сделал это для удовольствия, это на самом деле небольшой вызов, поскольку наивная реализация переполняет long
очень быстро. Я включил их в комментарии.
nPr = n!/(n - r)!
nCr = n!/r! (n - r)!
Implementaion
public static class PermutationsAndCombinations
{
public static long nCr(int n, int r)
{
// naive: return Factorial(n)/(Factorial(r) * Factorial(n - r));
return nPr(n, r)/Factorial(r);
}
public static long nPr(int n, int r)
{
// naive: return Factorial(n)/Factorial(n - r);
return FactorialDivision(n, n - r);
}
private static long FactorialDivision(int topFactorial, int divisorFactorial)
{
long result = 1;
for (int i = topFactorial; i > divisorFactorial; i--)
result *= i;
return result;
}
private static long Factorial(int i)
{
if (i <= 1)
return 1;
return i * Factorial(i - 1);
}
}
Использование
Console.WriteLine(PermutationsAndCombinations.nPr(10, 3));
Console.WriteLine(PermutationsAndCombinations.nCr(10, 3));
Печать:
720
120
@ Рихард, нет, это не наивный, о котором я говорю, это будет «Factorial (n)/Factorial (n - r)», обновится, чтобы сделать яснее. – weston
Получил! Извините, это тоже моя вина, английский не мой родной язык. – AFract
// naive: return Factorial (n)/Factorial (r) * Factorial (n - r); должно быть // наивным: return Factorial (n)/(Factorial (r) * Factorial (n - r)); –
- 1. Требуется перестановка и комбинация
- 2. Перестановка и комбинация в Python
- 3. vb .net перестановка строки. перестановка или комбинация?
- 4. какой? перестановка или комбинация?
- 5. Oracle pl/sql перестановка и комбинация
- 6. Комбинация C++ и Matlab
- 7. Комбинация C++ и Objective-C
- 8. Перестановка указатель в C
- 9. Перестановка в C#
- 10. k перестановка в C++
- 11. Реальная комбинация в Groovy
- 12. C++ комбинация стопов и стеа?
- 13. Перестановка массива char В C
- 14. Перестановка 2 строк в C++
- 15. Перестановка 0..7 в C
- 16. Перестановка для чисел в C
- 17. Перестановка массива строк в C++
- 18. Перестановка двух строк в C++
- 19. Бит-перестановка/манипуляция в C
- 20. Перестановка алгоритм C++
- 21. Печать Уникальная перестановка в C++
- 22. Рекурсивная перестановка C++
- 23. C# Перестановка массива arraylists?
- 24. Комбинация C# и VB.NET в решении
- 25. Комбинация разработки C++ и javascript в Eclipse
- 26. C# Список всех Перестановка
- 27. Комбинации и перестановка Haskell
- 28. Перестановка и объединение подкатегорий
- 29. Комбинация очереди стека C#
- 30. Javascript - Перестановка и возможность
Вам просто нужно число nCr и nPr? Вы еще что-нибудь пробовали? опубликуйте его и скажите, где вы застряли. – weston