Использование индукции для доказательства этой рекурсии работает? Проблема "Операция удаления для двух строк" - PullRequest
0 голосов
/ 29 марта 2020

Нам дана следующая задача:

"Учитывая два слова word1 и word2, найдите минимальное количество шагов, необходимых для того, чтобы слова1 и word2 были одинаковыми, где на каждом шаге вы можете удалить один символ в любом string. "

Пример 1:

Ввод:" sea "," eat "

Ввод: 2

Объяснение: Вам нужно сделать один шаг «море» к «еа» и еще один шаг к «еде» к «еа».

Рекурсия для решения этой проблемы заключается в Java:

public class Solution {
    public int minDistance(String s1, String s2) {
        return s1.length() + s2.length() - 2 * lcs(s1, s2, s1.length(), s2.length());
    }
    public int lcs(String s1, String s2, int m, int n) {
        if (m == 0 || n == 0)
            return 0;
        if (s1.charAt(m - 1) == s2.charAt(n - 1))
            return 1 + lcs(s1, s2, m - 1, n - 1);
        else
            return Math.max(lcs(s1, s2, m, n - 1), lcs(s1, s2, m - 1, n));
    }
}

Вопрос Я имею в виду, может ли индукция использоваться здесь, чтобы доказать, что эта рекурсия даст ответ, который мы ищем? если так, как я могу это сделать, так как это не математическое уравнение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...