เราได้รับอาร์เรย์ของจำนวนเต็ม เป้าหมายคือการนับตัวเลขเพื่อให้ผลต่างระหว่างผลรวมขององค์ประกอบทั้งหมดกับองค์ประกอบนั้นมากกว่าตัวแปร 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