Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java. Есть строка или [] массив s1 s2 s2 s1 s3 s1 s2 s1 s3 s1 s2 s2. Как посчитать сколько раз s1 перешел в s1, s2 и s3?

настя еремеева Профи (869), закрыт 4 года назад
Подскажите пожалуйста, как это реализовать на Java.
Это примерно должно выглядеть так
s1 s2 s2 s1 s3 s1 s2 s1 s3 s1 s2 s2
s1 перешел в s2 3 раза
s1 перешел в s1 0 раза
s1 перешел в s3 2 раза

s2 перешел в s1 2 раза
s2 перешел в s2 2 раза
s2 перешел в s2 0 раза

s3 перешел в s1 2 раза
s3 перешел в s2 0 раза
s3 перешел в s2 0 раза

и потом это занести в двумерный массив
(s1s1) (s1s2) (s1s3)
(s2s1) (s2s2) (s2s2)
(s3s1) (s3s2) (s3s3)

Буду рада любой помощи и подсказке. Заранее большое спасибо!
Лучший ответ
user49912 Оракул (51185) 4 года назад
Примерно так:
for (int i = 0; i < n-1; i++) {
ans[a[i]][a[i+1]]++;
}
Остальные ответы
Алексей Кузьминов Мудрец (11132) 4 года назад
Если все s-ки это символы, то можно просто перебрать все рядом лежащие символы и добавлять +1 к соответствующим элементам матрицы.
Но если это строки, и они могут частично содержаться друг в друге, задача становится гораздо интереснее. В некоторых случаях может быть даже несколько вариантов решения.
Александр Искусственный Интеллект (289408) 4 года назад
s1s1?
диагональные будут всяко разно нулями

для чего нужет этот двумерный массив?
настя еремееваПрофи (869) 4 года назад
мне нужно рассчитать вероятность появления. Допустим начальное состояние s1 и нужно посчитать вероятность того что следующим будет s1, s1s2 это посчитать вероятность того что слудующим будет s2, и т. д.

А чтобы это посчитать допустим для s1 общее кол-во переходов 5. Значит вероятность s1s1 будет 3/5 = 0.6, s1s2 будет 0/5=0, s1s3 будет 2/5=0.4

и вот я не знаю как на Java посчитать вот это
s1 перешел в s2 3 раза
s1 перешел в s1 0 раза
s1 перешел в s3 2 раза

s2 перешел в s1 2 раза
s2 перешел в s2 2 раза
s2 перешел в s2 0 раза

s3 перешел в s1 2 раза
s3 перешел в s2 0 раза
s3 перешел в s2 0 раза
Похожие вопросы