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

จำนวนองค์ประกอบที่มีความแตกต่างแน่นอนกับผลรวมขององค์ประกอบอื่น ๆ ทั้งหมดมากกว่า k ใน C++


เราได้รับอาร์เรย์ของจำนวนเต็ม เป้าหมายคือการนับตัวเลขเพื่อให้ผลต่างระหว่างผลรวมขององค์ประกอบทั้งหมดกับองค์ประกอบนั้นมากกว่าตัวแปร k

เราจะทำได้โดยหาผลรวมขององค์ประกอบของอาร์เรย์ ตอนนี้สำหรับแต่ละองค์ประกอบ arr[i] ตรวจสอบ −

sum-2(arr[i])>k เนื่องจาก sum มี arr[i] แล้ว ดังนั้นให้ลบสองครั้ง ถ้านับเพิ่มจริง

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − arr[]={ 1,2,3,0,3,2,0,1 }, k=10

ผลผลิต − จำนวนองค์ประกอบ:2

คำอธิบาย − ผลรวมขององค์ประกอบคือ 12

12-1-1=10, 12-2-2=8, 12-3-3=6, 12-0-0=12.

เพียง 12> 10 ดังนั้นสำหรับ 2 องค์ประกอบ (0 วินาที) เงื่อนไขจะเป็นจริง

ป้อนข้อมูล − arr[]={ 1,1,1,1,1 } k=10

ผลผลิต − จำนวนองค์ประกอบ:0

คำอธิบาย − ผลรวมขององค์ประกอบคือ 5

สำหรับแต่ละ 1 5-1-1=3 <10 .

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

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

  • ฟังก์ชัน numberCount(int arr[], int n, int k) รับอาร์เรย์และความยาวเป็นอินพุตและส่งกลับจำนวนองค์ประกอบที่มีความแตกต่างแน่นอนกับผลรวมขององค์ประกอบอื่นๆ ทั้งหมดมากกว่า k

  • นับเริ่มต้นเป็น 0

  • คำนวณผลรวมขององค์ประกอบทั้งหมดของอาร์เรย์เป็นผลรวม

  • ตอนนี้ trvaser ทั้งอาร์เรย์จาก i=0 ถึง i

  • สำหรับแต่ละองค์ประกอบ arr[i] ถ้า sum-arr[i]-arr[i]>k นับการเพิ่มขึ้น

  • นับย้อนกลับเมื่อสิ้นสุดลูปเป็นผลสุดท้าย

ตัวอย่าง

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int numberCount(int arr[],int n, int k){
   int count=0;
   int sum=0;
   int i;
   for(i=0;i<n;i++)
      { sum+=arr[i]; }
   for(int i=0;i<n;i++){
      if( abs(sum-arr[i]-arr[i]) > k ){
         count++;
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,4 };
   int len=sizeof(Arr)/sizeof(Arr[0]);
   int K=5;
   cout<<endl<<"Count of elements: "<<numberCount(Arr,len,K);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of elements: 2