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

ดัชนีรวมต่ำสุดของสองรายการใน C++

ปัญหา

สมมติว่ามีเพื่อนสองคนคือ Amal และ Bimal ต้องการเลือกร้านอาหารสำหรับมื้อเย็น ตอนนี้ทั้งคู่มีรายการร้านอาหารโปรดแทนด้วยสตริง เราต้องช่วยพวกเขาหาสิ่งที่ทั้งคู่ชอบซึ่งมีผลรวมดัชนีของรายการน้อยที่สุด หากมีทางเลือกที่เท่ากันระหว่างคำตอบที่ต่างกัน ให้คืนค่าทั้งหมดโดยไม่มีข้อกำหนดเรื่องลำดับ

เช่น ถ้าผนวกเข้าเป็น ["ABC","PQR","MNO","XYZ"] และ ["TUV","GHI","KLM","ABC"] ผลลัพธ์จะเป็น ["ABC"]

วิธีแก้ปัญหา

  1. กำหนด map mp หนึ่งอัน
  2. least := inf
  3. for i := 0 ถึง ขนาดของ l1 - 1 ทำ:
    • for j := 0 ถึง ขนาดของ l2 - 1 ทำ:
      • ถ้า l1[i] เท่ากับ l2[j]:
        • เพิ่ม l1[i] เข้าไปท้าย mp[i + j]
  4. กำหนดอาร์เรย์ res
  5. it = สมาชิกแรกของ mp
  6. res := value ของ it
  7. คืนค่า res

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

#include <bits/stdc++.h> 
using namespace std; 

void print_vector(vector<auto> v){ 
    cout << "["; 
    for(int i = 0; isecond; 
        return res; 
    } 
}; 

int main(){ 
    Solution ob; 
    vector<string> v = {"ABC","PQR","MNO","XYZ"}, v1 = {"TUV","GHI","KLM","ABC"}; 
    print_vector(ob.findRestaurant(v, v1)); 
}

อินพุต

{"ABC","PQR","MNO","XYZ"}, {"TUV","GHI","KLM","ABC"}

เอาต์พุต

[ABC, ]