Есть тест, состоящий из 12 вопросов. каждый вопрос должен иметь ценность более 4 баллов. сумма всех вопросов должна быть равна 100. Также все вопросы должны иметь целочисленное значение. поэтому возможная комбинация может быть 5,5,5,5,5,5,5,5,5,5,45
существует метод, который теоретически даст такой результат:
// this method will return the possible number of tests
public static double PosibleNumberOfTests()
{
int q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12; // each question value
double counter=0; // if there is a valid combination then counter will be increased by 1
for (q12 = 5; q12 < 46; q12++)
{
for (q11 = 5; q11 < 46; q11++)
{
for (q10 = 5; q10 < 46; q10++)
{
for (q9 = 5; q9 < 46; q9++)
{
for (q8 = 5; q8 < 46; q8++)
{
for (q7 = 5; q7 < 46; q7++)
{
for (q6 = 5; q6 < 46; q6++)
{
for (q5 = 5; q5 < 46; q5++)
{
for (q4 = 5; q4 < 46; q4++)
{
for (q3 = 5; q3 < 46; q3++)
{
for (q2 = 5; q2 < 46; q2++)
{
for (q1 = 5; q1 < 46; q1++)
{
if (q1 + q2 + q3 + q4 + q5 + q6 + q7 + q8 + q9 + q10 + q11 + q12 == 100)
counter++; // here is what we need. How many times will this line be executed!
}
}
}
}
}
}
}
}
}
}
}
}
return counter;
}
обратите внимание, что я создал каждый цикл для значений меньше 46, потому что, если все вопросы должны иметь значение больше 4, то, например, вопрос будет стоить 50 баллов.
Извините, люди, я думаю, что не объясняю себя четко. Я задал 12 вопросов наугад. В этом примере может быть тест со 100 вопросами. Мне нужно что-то вроде того, что dlev упомянул в своем комментарии. Я также знаю, что могу делать перерывы в циклах, чтобы сделать метод более эффективным. если сумма больше 100, тогда зачем продолжать цикл, просто выйдите из соответствующего цикла