मान लीजिए कि हमारे पास दो तार A और B हैं, और अन्य दो लागत मान जैसे CostA, और CostB हैं। हमें A और B को समान बनाने के लिए न्यूनतम लागत ज्ञात करनी होगी। हम स्ट्रिंग से वर्णों को हटा सकते हैं, स्ट्रिंग A से हटाने की लागत CostA है, और स्ट्रिंग B से हटाने की लागत CostB है। एक स्ट्रिंग से सभी वर्णों को हटाने की लागत समान है। मान लीजिए कि स्ट्रिंग A ="wxyz", B ="wyzx", CostA 10 है और CostB 20 है। तो आउटपुट 30 होगा। यदि हम दोनों स्ट्रिंग्स से x हटाते हैं, तो A और B समान होंगे। तो लागत 10 + 20 =30 है।
यह सबसे लंबी सामान्य बाद की समस्या की भिन्नता में से एक है। हमें ए और बी से एलसीएस की लंबाई का पता लगाना है, फिर एलसीएस की लंबाई को ए और बी से घटाना है, इस प्रकार हम हटाए जाने वाले वर्णों की संख्या प्राप्त कर सकते हैं।
उदाहरण
#include <iostream>
using namespace std;
bool isRepresentedInDDigits(int num, int d, int base) {
if (d==1 && num < base)
return true;
if (d > 1 && num >= base)
return isRepresentedInDDigits(num/base, --d, base);
return false;
}
bool checkNumber(int num, int d) {
// Check for all bases one by one
for (int base=2; base<=32; base++)
if (isRepresentedInDDigits(num, d, base))
return true;
return false;
}
int main() {
int num = 8;
int dig = 2;
if(checkNumber(num, dig))
cout << "Can be represented";
else
cout << "Can not be represented";
} आउटपुट
Can be represented