C++中統計陣列中存在乘積的數對
給定一個整數型元素陣列,任務是從給定陣列中形成數對,計算數對中元素的乘積,並檢查給定的乘積是否存在於給定陣列中。
輸入 − int arr[] = {6, 2, 3, 1, 5, 10}
輸出 − 乘積存在於同一陣列中的數對個數為 − 7
解釋 − 從給定陣列中可以形成的數對有:(6, 2), (6, 3), (6, 1), (6, 5), (6, 10), (2, 3), (2, 1), (2, 5), (2, 10), (3, 1), (3, 5), (3, 10), (1, 5), (1, 10), (5, 10)。因此,乘積在同一陣列中存在的數對為 (2, 3) (乘積為6), (6, 1) (乘積為6), (3, 1) (乘積為3), (2, 5) (乘積為10), (1, 5) (乘積為5), (2, 1) (乘積為2), (1, 10) (乘積為10).
輸入 − int arr[] = {2, 4, 8, 5, 10}
輸出 − 乘積存在於同一陣列中的數對個數為 − 2
解釋 − 從給定陣列中可以形成的數對有:(2, 4), (2, 8), (2, 5), (2, 10), (4, 8), (4, 5), (4, 10), (8, 5), (8, 10), (5, 10)。因此,乘積在同一陣列中存在的數對為 (2, 4) (乘積為8), (2,5) (乘積為10).
下面程式中使用的方法如下
解決給定問題有多種方法,即樸素方法和高效方法。讓我們首先看看樸素方法。
輸入一個整數元素陣列,計算陣列的大小並將資料傳遞給函式。
宣告一個名為count的臨時變數來儲存具有在給定陣列中存在的乘積值的數對的數量。
從i=0開始迴圈到陣列大小
在迴圈內,從j=i+1開始另一個迴圈到陣列大小
在迴圈內計算乘積為 arr[i] * arr[j]
從k=0開始另一個迴圈到陣列大小
在K迴圈內,如果乘積 = arr[k],則將計數加1
返回計數
列印結果。
高效方法
輸入一個整數元素陣列,計算陣列的大小並將資料傳遞給函式。
宣告一個名為count的臨時變數來儲存具有在給定陣列中存在的乘積值的數對的數量。
建立一個STL集合型別的變數 pro
從i=0開始迴圈到陣列大小
在迴圈內,將arr[i]插入到集合變數 pro 中
從i=0開始另一個迴圈到陣列大小
在迴圈內,從j=i+1開始另一個迴圈到陣列大小
將乘積設定為 arr[i] * arr[j]
如果 pro.find(product) != pro.end(),則將計數加1
返回計數
列印結果。
示例(樸素方法)
#include <bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
int product = 1;
int count = 0;
for(int i = 0 ; i<size ; i++){
for(int j = i+1;j<size;j++){
product = arr[i] * arr[j];
for(int pro = 0 ; pro < size; pro++){
if(product == arr[pro]){
count++;
}
}
}
}
return count;
}
int main(){
int arr[] = {6, 2, 3, 1, 5, 10};
int size = sizeof(arr)/sizeof(arr[0]);
cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of pairs whose products exist in same array are: 7
示例(高效方法)
#include<bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
set< int > pro;
int count = 0;
int product = 1;
for (int i = 0 ; i < size; i++){
pro.insert(arr[i]);
}
for (int i = 0 ; i < size; i++){
for (int j = i + 1; j < size ; j++){
product = arr[i] * arr[j];
if(pro.find(product) != pro.end()){
count++;
}
}
}
return count;
}
int main(){
int arr[] = {6, 2, 3, 1, 5, 10};
int size = sizeof(arr)/sizeof(arr[0]);
cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of pairs whose products exist in same array are: 7
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP