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

นับ Triplets เพื่อให้สามารถเขียนตัวเลขตัวใดตัวหนึ่งเป็นผลรวมของอีกสองตัวใน C ++


เราได้รับอาร์เรย์ Arr[] ของจำนวนเต็มที่มีความยาว n เป้าหมายคือการหาจำนวนแฝด (Arr[i],Arr[j],Arr[k]) โดยที่ผลรวมของตัวเลขสองจำนวนใด ๆ เท่ากับจำนวนที่สาม

a+b=c โดยที่ a,b,c เป็นองค์ประกอบของ Arr[] ที่มีดัชนี i,j,k เช่นนั้น 0<=i

อินพุต

arr[]= { 1,2,2,3,4 }, N=5

ผลลัพธ์

Number of triplets: 4

คำอธิบาย

แฝดสามที่มี arr[x]+arr[y]=arr[z].

Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,3,4) → 1+3=4
Arr{}=[ 1,2,2,3,4 ] =(2,2,4) → 2+2=4

แฝดสามทั้งหมด:4

อินพุต

arr[]= {2,2,2,2,2}, N=5

ผลลัพธ์

Number of triplets: 0

คำอธิบาย

ทุก ๆ สองตัวเลขมี sum=4 ซึ่งไม่เท่ากับ third=2

แฝดสามทั้งหมด:0

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราใช้อาร์เรย์จำนวนเต็ม Arr[] ที่เริ่มต้นด้วยตัวเลขสุ่ม

  • ตัวแปร N เก็บความยาวของ Arr[].

  • ฟังก์ชัน countTriplets(int arr[],int n) รับอาร์เรย์ ความยาวจะคืนค่า triplets ซึ่งสามารถเขียนตัวเลขตัวใดตัวหนึ่งเป็นผลรวมของอีกสองตัว

  • นำตัวแปรเริ่มต้นนับเป็น 0 สำหรับจำนวนแฝดสาม

  • Traverse array ใช้สาม for loops สำหรับแต่ละองค์ประกอบของ triplet

  • วงนอกสุดจาก 0<=i

  • ตรวจสอบว่า arr[i]+arr[j]==arr[k] หรือ arr[i]+arr[k]==arr[j] หรือ arr[k]+arr[j]==arr[i] ถ้า จริงแล้วนับเพิ่มขึ้น

  • เมื่อสิ้นสุดการวนซ้ำทั้งหมด การนับจะมีจำนวน triplets ทั้งหมดที่ตรงตามเงื่อนไข

  • คืนค่าการนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[], int n){
   int count = 0;
   for (int i = 0; i < n-2; i++){
      for (int j = i+1; j < n-1; j++){
         for (int k = j+1; k < n; k++){
            if(arr[i]+arr[j]==arr[k] || arr[j]+arr[k]==arr[i] || arr[k]+arr[i]==arr[j]){                   count++;
             }
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,2,3,4 };
   int N=5; //length of array
   cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
   return 0;
}

ผลลัพธ์

Number of triplets : 4