Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Minimum Cost To Make Two Strings Identical ใน C++

สมมติมี Strings A, B และ Cost Values: CostA, CostB ต้องการหา Minimum Cost ทำให้ A และ B เหมือนกัน โดยลบ Characters Cost ลบจาก A คือ CostA จาก B คือ CostB ตัวอย่าง A="wxyz", B="wyzx", CostA=10, CostB=20 Output=30 ลบ x จากทั้งคู่ Cost=10+20=30

นี่เป็น Variation ของ Longest Common Subsequence (LCS) หา LCS Length แล้วลบออกจากความยาว A และ B จะได้จำนวน Characters ที่ต้องลบ

ตัวอย่างโค้ด C++

#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) {
    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