Небольшое программирование для экзамена по математике? - PullRequest
1 голос
/ 22 ноября 2011

Я сдаю экзамен завтра, и на этом экзамене есть немного о вероятности. Теперь по многим из этих задач нужно найти все результаты. Это иногда может быть сложно получить право. Допустим, у вас есть двое игроков, играющих в ножницы. Один игрок - Джон, другой - Риз. Два играют три игры подряд. Все возможные результаты этого набора с тремя раундами могут быть представлены как JTR. Это будет Джон выигрывает первый раунд, затем идет ничья, а затем Риз выигрывает раунд. Я знаю, что есть 3 * 3 * 3 = 27 разных результатов. Мне разрешают использовать мой компьютер на экзамене, и короткий фрагмент кода, который даст любые буквы, в этом случае, по крайней мере, выписать все 27 комбинаций, был бы действительно хорош! Я спрашиваю только в случае, если есть какой-то известный алгоритм, который делает это, я буду взламывать его сам с этого момента. Будем очень благодарны за любые предложения!

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Вот псевдокод для такой процедуры:

proc rps()
    for outcome1 in {J,T,R}
        for outcome2 in {J,T,R}
            for outcome3 in {J,T,R}
                print (outcome1, outcome2, outcome3)

На реальном языке программирования вы можете представить набор {J, T, R} в виде чисел 1, 2, 3 (например).

Конечно, этот фрагмент будет работать только в том случае, если вы знали количество раундов заранее. Для переменного количества раундов вы должны использовать рекурсию.

1 голос
/ 22 ноября 2011

Попробуйте следующую функцию:

void permute(String[] items, String[] soFar, int depth) {
    if (depth == soFar.length) {
        System.out.println(Arrays.toString(soFar));
        return;
    }
    for(String item: items) {
        soFar[depth] = item;
            permute(items,soFar,depth+1);
    }
}

Назовите это так:

permute(new String[] {"J","T","R"},new String[3],0);

Первый аргумент - это массив элементов, которые вы хотите переставить, второй аргумент - этопустой массив - это столько, сколько вы хотите, чтобы были перестановки, и третий аргумент должен быть 0, чтобы его запустить.

...