Giả sử chúng ta có một số n, hai mảng A và B có kích thước lần lượt là k1 và k2. Amal và Bimalare chơi trò chơi bài thú vị. Có n thẻ, được đánh số từ 1 đến n. Ban đầu các thẻ được phân phối giữa chúng. Trò chơi diễn ra như sau:ở mỗi lượt, mỗi người chơi lấy một trong các thẻ của họ (tùy theo ý muốn của họ) và đặt lên bàn, để người chơi khác không tìm thẻ mà họ đã chọn. Sau đó, cả hai thẻ được tiết lộ và người chơi, có số thẻ lớn hơn, cầm cả hai thẻ trên tay. Mọi thẻ có thể được chơi bất kỳ số lần nào. Are đại diện cho các thẻ mà Amal chơi, B đại diện cho các thẻ mà Bimal chơi. Người chơi sẽ thua nếu không có bất kỳ thẻ nào. Chúng ta phải tìm ra người chiến thắng cuối cùng.
Vì vậy, nếu đầu vào giống như n =5; A =[3, 2]; B =[5, 1, 4], thì đầu ra sẽ là Bimal, vì ban đầu họ đang chơi (3, 5), Bimal lấy tất cả các thẻ, Sau đó chơi (3, 1) Amal lấy cả hai thẻ, sau đó nếu họ chơi (3 , 4) Bimal lấy tất cả và sau đó nếu Amal chơi 1, Bimal sẽ lấy họ với thẻ 5 do đó sẽ không có thẻ nào trong tay Amal.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
d := 0 e := 0 for initialize i := 0, when i < size of A, update (increase i by 1), do: f := A[i] if d < f, then: d := f for initialize i := 0, when i < size of A, update (increase i by 1),do: f := A[i] if e < f, then: e := f if d > e, then: return "Amal" Otherwise return "Bimal"
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include<bits/stdc++.h> using namespace std; string solve(int n, vector<int> A, vector<int> B){ int d = 0; int e = 0; for(int i = 0; i<A.size(); i++){ int f = A[i]; if (d < f) d = f; } for(int i = 0; i<A.size(); i++){ int f = A[i]; if(e < f) e = f; } if (d > e) return "Amal"; else return "Bimal"; } int main(){ int n = 5; vector<int> A = {3, 2}; vector<int> B = {5, 1, 4}; cout << solve(n, A, B) << endl; }
Đầu vào
5, {3, 2}, {5, 1, 4}
Đầu ra
Bimal