Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ditulis dalam C++, cari bilangan enam tuple yang memenuhi persamaan

Ditulis dalam C++, cari bilangan enam tuple yang memenuhi persamaan

王林
王林ke hadapan
2023-09-11 17:17:11556semak imbas

Ditulis dalam C++, cari bilangan enam tuple yang memenuhi persamaan

Dalam artikel ini kita akan menerangkan kaedah untuk mencari heksagram yang memenuhi persamaan. Oleh itu, kita mengambil persamaan sebagai contoh dan perlu mencari nilai a, b, c, d, e dan f yang memenuhi persamaan berikut.

( a + b + c ) * e / d = f

Mari kita susun semula persamaan −

( a + b + c ) = ( f * d ) / e

Berikut adalah contoh mudah masalah yang diberikan -

Input : arr [ ] = { 1, 3 }
Output : 4
Explanation : ( a, b, c, e, f ) = 1, d = 3
   ( a, b, c, d, e ) = 1, f = 3
   ( a, b, c ) = 1, ( d, e, f ) = 3
   ( a, b, c, d, f ) = 3, ( e ) = 1

Input : arr [ ] = { 2, 5 }
Output : 3

Kaedah untuk mencari penyelesaian

Kami akan menggunakan kaedah naif untuk mencari penyelesaian masalah yang diberikan.

Pendekatan naif

Dalam masalah ini, dengan memerhatikan LHS dan RHS, kita boleh mencari semua keputusan LHS yang mungkin dan menyimpannya dalam tatasusunan, begitu juga, mencipta tatasusunan RHS dan mengisinya dengan semua keputusan RHS yang Kemungkinan.

Semak sama ada dua tatasusunan mempunyai nilai yang sama dan tambahkan kiraan untuk setiap nilai yang ditemui dan akhirnya memaparkan hasilnya.

Contoh

#include<bits/stdc++.h>
using namespace std;
int findsamenumbers(int *arr1, int *arr2, int n){
    int i = 0, j = 0, k = 0, count=0;
    while(( i < n*n*n+1) && (j < n*n*n+1)){
        if(arr1[i] < arr2[j])
            i++;
        else if(arr1[i] == arr2[j]){
            count++;
        int temp = arr1[i];
        while(temp==arr1[++i]){
            count++;
        }
        while(temp==arr2[++j]){
            count++;
        }
    }
    else
        j++;
    }  
    return count;
}
int main(){
    int arr[] = {2,5};
    int n = sizeof(arr)/sizeof(arr[0]);
    // Generating all possible values of LHS array
    int index = 0,i;
    int LHS[n*n*n ];
    for ( i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for(int k = 0; k < n; k++){
                LHS[index++] = (arr[i] * arr[j]) / arr[k];
            }
        }
    }
    // Generating all possible value of RHS array
    int RHS[n*n*n ];
    index=0;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < n; j++){
            for (int k = 0; k < n; k++){
                RHS[index++] = (arr[i] + arr[j] + arr[k]);
            }
        }
    }
    sort(RHS, RHS + (n*n*n));
    sort(LHS, LHS + (n*n*n));
    int result = findsamenumbers(LHS, RHS, n);
    cout<<"Number of sextuplets that satisfy an equation: "<<result;
    return 0;
}

Output

Number of sextuplets that satisfy an equation: 3

Penjelasan program di atas

Dalam program ini, kami telah mencipta dua tatasusunan untuk memegang setiap keputusan LHS dan RHS. Kami menggunakan tiga gelung bersarang untuk meletakkan setiap kemungkinan nilai (a, b, c) ke dalam LHS dan setiap kemungkinan nilai (d, e, f) ke dalam RHS. Selepas itu kami mengisih dua tatasusunan untuk membandingkannya dan mencari nilai yang sama dalam kedua-dua tatasusunan yang menghantar kedua-dua tatasusunan kepada fungsi findsamenumber().

Dalam fungsi findsamenumber(), kami menggunakan dua gelung bersarang untuk menyemak nilai yang sama. Apabila kami menemui dua elemen yang sama, kami menyemak kekerapan nombor itu dalam kedua-dua tatasusunan untuk mengira bilangan kali bagi setiap nilai yang mungkin.

if(arr1[i] == arr2[j]){
   count++;
   int temp = arr1[i];
   while(temp==arr1[++i]){
      count++;
   }
   while(temp==arr2[++j]){
      count++;
   }

Kesimpulan

Dalam artikel ini, kami menyelesaikan bilangan sextet yang memenuhi persamaan dalam tatasusunan yang diberikan. Kami mencari setiap nilai yang mungkin bagi pembolehubah dalam persamaan 6-pembolehubah (a + b + c) * e / d = f. Kita boleh menyelesaikan masalah ini dalam mana-mana bahasa pengaturcaraan lain seperti C, Java, dan python.

Atas ialah kandungan terperinci Ditulis dalam C++, cari bilangan enam tuple yang memenuhi persamaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam