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

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

王林
Lepaskan: 2023-09-11 17:17:11
ke hadapan
633 orang telah melayarinya

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
Salin selepas log masuk

Mari kita susun semula persamaan −

( a + b + c ) = ( f * d ) / e
Salin selepas log masuk

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

Number of sextuplets that satisfy an equation: 3
Salin selepas log masuk

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++;
   }
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan