По сути, вы можете сказать, что количество возможных оценок (качество решения) должно быть конечным и достаточно низким, чтобы помещаться в памяти. Нецелое в общем случае означает недискретное, что приводит к бесконечному количеству возможных решений.
Если существует только N возможных баллов решения, вы знаете, что в большинстве случаев вам нужно будет найти N из них, чтобы получить лучший, а не целое экспоненциальное количество способов добраться до них. Это идея динамического программирования.