Таблица входа игроков Проблема заключается в максимальном общем рейтинге, при покупке одного игрока с каждой позиции по определенной цене.Например 29000 €.Вы можете использовать 27000 €, но не можете использовать 29001 €.
Примечание: Вы можете купить только одного игрока с каждой позиции, поэтому, если есть 6 позиций, и в каждой позиции 10 игроков, количество всех возможностей составляет 11^ 6
Все, что я вижу, это проблема ранца, но я думаю, что должно быть какое-то отличное решение этой проблемы.
Я уже пробовал алгоритм ранца, но он не работал для больших входов, таких как11 позиций и каждая позиция имеет 50 игроков для проверки.
int DP()
{
int price = 29000;
int positions = 3; // I tried this approach , it is unfinished though.
int players = 3;
int ratings[][] = new int[positions][players];
int prices[][] = new int[positions][prices];
int K[][][] = new int[positions][price][players];
for(int i = 0; i <= positions; i++)
{
for(int j = 0; j<=players; j++)
{
for(int w = 0; w<=price; w++)
{
if(i==0||j==0||w==0) // Base case.
K[i][j][w]=0;
else if(prices[i-1][w-1] <=w)
K[i][j][w] = max(ratings[i-1][j-1] + K[i-1][j-1][w-price[i-1][j-1]], K[i-1][j-1][w];
else
K[i][j][w] = K[i-1][j-1][w];
}
}
}
return K[positions][players][price];
}
Пример вывода:
Enter the amount to spend (X): 100 000
Enter the number of the positions (N): 6 //The first N position
Enter the number of the available players for each position (K): 5
// The first K players of each position
DP results:
Total ratings : 547
Total cost: 98 925
Players:
1-Gianfranco Zola
2-Jimmy Floyd Hasselbaink
3-...
4-...