Я был бы очень признателен вам, ребята, если бы вы могли сообщить мне какой-нибудь метод сокращения времени выполнения.
ограничение времени: 0,5 сек.
Вопрос по алгоритму: я хочу соединить сайт на западе с сайтом на востоке. (На данный момент только один мост может быть подключен к одному участку.) Поскольку я стараюсь построить как можно больше мостов, я стараюсь построить столько (N) мостов, сколько возможно на западе. мосты не могут перекрывать друг друга. На этом этапе напишите программу, чтобы выяснить, сколько случаев вы можете построить мост.
Входные данные. В первой строке входных данных указано количество тестовых случаев «T». Со следующей строки каждому набору входных данных дается целое число (0 ‹ N ≤ M ‹ 30) — количество участков к западу и востоку от реки.
Выходные данные: для каждого теста выведите количество случаев, в которых можно построить мост при заданных условиях.
Пример:
Input Output
3
2 2 1
1 5 5
13 29 67863915
Вот мой код:
#include <stdio.h>
int combination(int n, int r) {
if (n == r || r == 0) return 1;
else return combination(n - 1, r - 1) + combination(n - 1, r);
}
int main(void)
{
int Tcase;
int N, M;
scanf("%d", &Tcase);
for (int i = 0; i < Tcase; i++) {
int total;
scanf("%d %d", &N, &M);
if (M - N == 0)
total = 1;
else
total = combination(M, N);
printf("%d\n", total);
}
return 0;
}
2 2
равен1
? - person AKSingh   schedule 14.04.2021