• 1
    डेटा I/O
    • कार्य
  • 2
    शर्तें
    • कार्य
  • 3
    for लूप
    • कार्य
  • 4
    स्ट्रिंग
    • कार्य
  • 5
    while लूप
    • कार्य
  • 6
    सूचियां
    • कार्य
  • 7
    2D मैट्रिक्स
    • कार्य
  • 8
    डिक्शनरी
    • कार्य
  • 9
    सेट
    • कार्य
  • 10
    फ़ंक्शन
    • कार्य
  • к

पाठ 6. Lists

कठिनाई:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

कार्य«सबसे बड़ी सामान्य अनुवर्ती»

💻 Python
आप टेक्स्ट डेटा की तुलना करने के लिए एक प्रोग्राम विकसित कर रहे हैं और आपको दो पंक्तियों के बीच सबसे बड़ी सामान्य अनुक्रम (greatest general subsequence) खोजने की आवश्यकता है।
दो पंक्तियाँ दी गई हैं। सबसे बड़ी सामान्य अनुक्रम (LCS, Longest Common Subsequence) खोजें।

इनपुट फॉर्मेट

दो पंक्तियाँ, जिनमें से प्रत्येक के सिरे रिक्त स्थानों द्वारा अलग किए गए हैं (यदि तत्व एक है, तो उसके अंदर तुलना करें)

आउटपुट फॉर्मेट

सबसे लंबा सामान्य अनुक्रम

उदाहरण

इनपुट

संगीत फिल्म यात्रा किताब खेल
सिनेमा नृत्य किताबें पाक कला

आउटपुट

सिनेमा बुक

संकेत

There will be no clue here, decide for yourself!

main.py
परीक्षण 1
परीक्षण 2
परीक्षण 3
परीक्षण 4
परीक्षण 5
परीक्षण 6
परीक्षण 7
परीक्षण 8
परीक्षण 9
परीक्षण 10
डेवलपर का समाधान
def longest_common_subsequence(s1, s2):
    """
    Находит самую длинную общую подпоследовательность между двумя строками.
    Работает как пословно, так и посимвольно — автоматически.
    """

    # Если строки содержат пробелы — считаем, что нужно сравнивать слова
    if ' ' in s1 or ' ' in s2:
        seq1 = s1.split()
        seq2 = s2.split()
        join_result = lambda lst: ' '.join(lst)  # итог как строка слов
    else:
        seq1 = list(s1)
        seq2 = list(s2)
        join_result = lambda lst: ''.join(lst)   # итог как строка символов

    n, m = len(seq1), len(seq2)

    # Матрица DP для хранения последовательностей
    dp = [[""] * (m + 1) for _ in range(n + 1)]

    # Заполнение таблицы
    for i in range(n):
        for j in range(m):
            if seq1[i] == seq2[j]:
                dp[i + 1][j + 1] = dp[i][j] + " " + seq1[i]
            else:
                dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j], key=len)

    # Возвращаем результат без лишнего пробела
    return join_result(dp[-1][-1].strip().split())

# === Точка входа ===
if __name__ == "__main__":
    s1 = input()
    s2 = input()
    print(longest_common_subsequence(s1, s2))

🎉 बधाई! 🎉

आपने कार्य को शानदार ढंग से हल किया! यह कठिन था, लेकिन आपने सही उत्तर खोजा। आप प्रोग्रामिंग में महारत के करीब हैं! ऐसे ही जारी रखें।

AD

विज्ञापन

red-snake blue-snake green-snake

कोड चल रहा है...

AI सहायक

नमस्ते! मैं आपका प्रोग्रामिंग सहायक हूँ। Python के बारे में कोई भी सवाल पूछें — मैं functions, methods समझा सकता हूँ और मौजूदा task में मदद कर सकता हूँ!