Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để đếm số sau các phần tử chia lớn hơn một nửa kích thước mảng

Giả sử chúng ta có một mảng A với n phần tử. Chúng ta phải tìm một số nguyên khác d, sao cho sau mỗi số trong mảng chia cho d, số giá trị dương được trình bày trong mảng lớn hơn hoặc bằng một nửa kích thước mảng . Nếu có nhiều giá trị của d thoả mãn điều kiện. Nếu có nhiều câu trả lời, hãy trả lại bất kỳ câu nào trong số đó.

Vì vậy, nếu đầu vào là A =[10, 0, -7, 2, 6], thì đầu ra sẽ là 4, vì ở đây n =5, vì vậy chúng ta cần ít nhất $ \ mathrm {\ left \ lceil 5 / 2 \ right \ rceil =3} $ phần tử sau khi chia. Nếu d =4, mảng sau khi chia sẽ là [2,5, 0, −1,75, 0,5, 1,5], trong đó có 3 số dương là 2,5, 0,5 và 1,5.

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 -

 z:=0, f:=0n:=size of Afor khởi tạo i:=0, khi i  0, sau đó:(tăng z lên 1) nếu a <0, sau đó:(tăng f lên 1) nếu 2 * z> =n, sau đó:trả về 1 ngược chiều khi 2 * f> =n, sau đó:trả về -1 Ngược lại trả về 0  

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

 #include  using namespace std; int Giải (vector  A) {int z =0, f =0; int n =A.size (); for (int i =0; i  0) z ++; if (a <0) f ++; } if (2 * z> =n) return 1; else if (2 * f> =n) return -1; else return 0;} int main () {vector  A ={10, 0, -7, 2, 6}; cout < 

Đầu vào

 {10, 0, -7, 2, 6} 

Đầu ra

 1