Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm tất cả bộ ba (triplet) có tổng bằng 0 C++


Cho mảng số nguyên, tìm tất cả bộ ba (i, j, k) khác nhau sao cho tổng bằng 0. Ví dụ: {0,1,-1,2,2,-4,3,4} → các bộ ba: (0,1,-1), (0,-4,4), (1,-4,3), (2,2,-4).

Phương pháp: Ba vòng lặp lồng nhau (vét cạn)

  • Ba vòng lặp i < j < k.
  • Kiểm tra arr[i]+arr[j]+arr[k] == 0.
  • In ra và đánh dấu tìm thấy.

Phức tạp O(n³) – chỉ phù hợp mảng nhỏ.

Ví dụ mã nguồn

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

void findTripletsZero(int arr[], int n) {
    bool found = false;
    for (int i=0;i

Kết quả

0 1 -1
0 -4 4
1 -4 3
2 2 -4

Lưu ý: có thể tối ưu O(n²) bằng sort + two pointers.