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

โค้ด C++ คำนวณเงินหลังซื้อขายหุ้น

สมมติว่าเรามีอาร์เรย์ A ขนาด n, B ขนาด m และตัวเลข r มีโอกาสซื้อหุ้น n โอกาส โอกาสที่ i ซื้อได้ไม่จำกัด ราคา A[i] มีโอกาสขาย m โอกาส ขายได้ไม่จำกัด ราคา B[i] ไม่สามารถขายมากกว่าที่มี ถ้ามีเงิน r บาทและไม่มีหุ้นอยู่ ต้องหาเงินสูงสุดหลังซื้อขาย

เช่น ถ้าอินพุตคือ A = [4, 2, 5]; B = [4, 4, 5, 4]; r = 11 เอาต์พุตจะเป็น 26 เพราะซื้อ 5 หุ้นราคา 2 แล้วขายทั้งหมดราคา 5 ได้ 26

ขั้นตอนการแก้ปัญหา

n := ขนาดของ A
an := 1100
bn := 0
for i := 0 ถึง n-1:
    if an > A[i]: an := A[i]
for i := 0 ถึง m-1:
    if bn < B[i]: bn := B[i]
if bn > an:
    r := bn * (r / an) + (r - (r / an) * an)
return r

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

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

int solve(vector<int> A, vector<int> B, int r) {
    int n = A.size(), m = B.size();
    int an = 1100, bn = 0;
    for (int i = 0; i < n; i++) {
        if (an > A[i]) an = A[i];
    }
    for (int i = 0; i < m; i++) {
        if (bn < B[i]) bn = B[i];
    }
    if (bn > an) {
        r = (bn) * (r / an) + (r - (r / an) * an);
    }
    return r;
}

int main() {
    vector<int> A = { 4, 2, 5 };
    vector<int> B = { 4, 4, 5, 4 };
    int r = 11;
    cout << solve(A, B, r) << endl;
}

อินพุต

{ 4, 2, 5 }, { 4, 4, 5, 4 }, 11

เอาต์พุต

26