Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में दो संख्यात्मक स्ट्रिंग्स को समान बनाने की न्यूनतम लागत


मान लीजिए हमारे पास दो संख्यात्मक स्ट्रिंग्स A और B हैं। हमें A और B को समान बनाने की न्यूनतम लागत ढूंढनी है। हम केवल एक ऑपरेशन कर सकते हैं, वह है स्ट्रिंग से अंक हटाना, एक अंक हटाने की लागत अंक के मान के समान है। मान लीजिए स्ट्रिंग A = "6789", B = "7859", तब हमें A से 6 हटाना होगा, और B से 5 हटाना होगा, तो लागत 5 + 6 = 11 होगी।

यह लॉन्गेस्ट कॉमन सबसीक्वेंस समस्या का एक प्रकार है। हमें A और B से LCS की लंबाई ढूंढनी होगी, इस सूत्र का उपयोग करके हम न्यूनतम लागत प्राप्त कर सकते हैं।

MinimumCost = CostA + CostB - 2 * lcs_cost

उदाहरण

#include <iostream> using namespace std; int longest_common_subsequence(int dp[101][101], string a, string b, int a_len, int b_len) {    for (int i = 0; i < 100; i++)    for (int j = 0; j < 100; j++)    dp[i][j] = -1;    if (a_len < 0 || b_len < 0) {       return 0;    }    if (dp[a_len][b_len] != -1)    return dp[a_len][b_len];    int res = 0;    if (a[a_len] == b[b_len]) {       res = int(a[a_len] - 48) + longest_common_subsequence(dp, a, b, a_len - 1, b_len - 1);    } else       res = max(longest_common_subsequence(dp, a, b, a_len - 1, b_len),       longest_common_subsequence(dp, a, b, a_len, b_len - 1));       dp[a_len][b_len] = res;       return res; } int minCost(string str) {    int cost = 0;    for (int i = 0; i < str.length(); i++)    cost += int(str[i] - 48);    return cost; } int main() {    string a, b;    a = "6789";    b = "7859";    int dp[101][101];    cout << "Minimum Cost to make these two numbers identical: " << (minCost(a) + minCost(b) - 2 * longest_common_subsequence(dp, a, b, a.length() - 1, b.length() - 1));    return 0; }

आउटपुट

Minimum Cost to make these two numbers identical: 11

  1. - C++ में दो स्ट्रिंग्स को समान बनाने के लिए दिए गए ऑपरेशन के न्यूनतम नंबर

    समस्या कथन दो स्ट्रिंग्स str1 और str2 दी गई हैं, दोनों में a और b वर्ण हैं। दोनों स्ट्रिंग्स समान लंबाई की हैं। दोनों स्ट्रिंग्स में एक _ (खाली स्थान) है। पहले स्ट्रिंग को दूसरी स्ट्रिंग में बदलने के लिए निम्न ऑपरेशन का उपयोग करके न्यूनतम ऑपरेशन की संख्या ढूंढें: यदि _ स्थिति i पर है तो _ को स्

  1. - C++ में दो स्ट्रिंग्स को समान बनाने की न्यूनतम लागत

    मान लीजिए हमारे पास दो स्ट्रिंग्स A और B हैं, और दो लागत मान जैसे CostA, और CostB। हमें A और B को समान बनाने की न्यूनतम लागत ढूंढनी है। हम स्ट्रिंग से वर्ण हटा सकते हैं, स्ट्रिंग A से हटाने की लागत CostA है, और स्ट्रिंग B से हटाने की लागत CostB है। एक स्ट्रिंग से सभी वर्ण हटाने की लागत समान है। मान

  1. - C++ में डिलीशन के बिना दो स्ट्रिंग्स को एनाग्राम बनाने के लिए न्यूनतम मैनिपुलेशन

    मान लीजिए हमारे पास समान लंबाई की दो स्ट्रिंग्स हैं, हमें बिना किसी कैरेक्टर को डिलीट किए दो स्ट्रिंग्स को एनाग्राम बनाने के लिए आवश्यक न्यूनतम परिवर्तनों की संख्या ढूंढनी है। एनाग्राम दो स्ट्रिंग्स होती हैं जिनमें कैरेक्टर्स का समान सेट होता है। मान लीजिए दो स्ट्रिंग्स HELLO और WORLD हैं, यहां आवश्