


Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1
Susun atur ialah himpunan data serupa yang disimpan di lokasi memori bersebelahan dengan cara yang bersebelahan. Dengan mentakrifkan nilai offset sebagai nilai asas khusus untuk pangkalan data, lebih mudah untuk menilai kedudukan khusus setiap elemen. Nilai asas untuk indeks tertentu itu ialah sifar, dan nilai offset ialah perbezaan antara dua indeks tertentu. Subarray ialah sebahagian daripada tatasusunan tertentu dan boleh ditakrifkan sebagai satu set pembolehubah, dilabelkan dengan berbilang nilai. Subarray terpanjang merujuk kepada tatasusunan di mana semua elemen dalam tatasusunan lebih besar daripada K. Jumlah subarray jumlah maksimum di sini ialah -
Kurang daripada
dalam set data yang diberikan
adalah sama dengan set data yang diberikan.
Kurang daripada
dalam set data yang diberikan
Untuk mencari panjang subarray terpanjang, kita hanya perlu mencari jumlah nombor 1 dalam subarray tertentu. NOTA: Kiraan hendaklah lebih besar daripada kiraan sifar. Pembahagi sepunya terbesar ialah fenomena matematik di mana kita dapati nilai integer terbesar yang boleh membahagikan setiap integer dalam input dengan baki sifar. Syarat di sini ialah "pembahagi sepunya terbesar adalah lebih besar daripada 1". Ini bermakna nombor tertentu di sini hanya mempunyai sekurang-kurangnya satu pembahagi sepunya antara input yang diberikan.
Input (array) : arr[] = {4, 3, 2, 2} Output (after the process with sub-array operation) : 2 If we consider the subarray as {2, 2}, then we will get 2 as GCD. Which is > 1, is of maximum length.
Hari ini dalam artikel ini, kita akan belajar cara mencari subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 menggunakan persekitaran pengaturcaraan C++.
Algoritma untuk mencari subarray terpanjang dengan GCD lebih daripada 1
Dalam algoritma khusus ini, kita boleh mencari nilai sepunya terbesar bagi subarray terpanjang yang mengandungi lebih daripada 1.
Langkah pertama - mulakan.
Langkah 2 - Isytiharkan pembolehubah proses.
Langkah 3 - Tetapkan dan mulakannya kepada nilai sifar.
Langkah 4 - Buat fungsi untuk menilai panjang maksimum subarray ini.
Langkah 5 - Sertakan vektor sebagai hujah.
Langkah 6 - Buat pembolehubah untuk mendapatkan jawapan.
Langkah 7 - Tetapkan dan mulakannya kepada nilai sifar.
Langkah 8 - Simpan nilai subarray terpanjang dengan nilai GCD > 1.
Langkah 9 - Ulangi gelung untuk mencari pembahagi sepunya terbesar bagi setiap sub-tatasusunan.
Langkah 10 - Gantikan jawapan dengan nilai panjang subarray.
Langkah 11 - Jika pembahagi sepunya terbesar bagi subarray adalah lebih besar daripada 1, simpan jawapannya.
Langkah 12 - Kembalikan jawapan.
Langkah 13 - Jika tidak, jalankan gelung sekali lagi dan ulangi.
Langkah 14 - Tamatkan selepas proses selesai.
Sintaks untuk mencari subarray terpanjang yang GCDnya lebih besar daripada 1
int n; cin >> n; const int MAX_NUM = 100 * 1000; static int dp[MAX_NUM]; for(int i = 0; i < n; ++i){ int x; cin >> x; int cur = 1; vector<int> d; for(int i = 2; i * i <= x; ++i){ if(x % i == 0){ cur = max(cur, dp[i] + 1); cur = max(cur, dp[x / i] + 1); d.push_back(i); d.push_back(x / i); } } if(x > 1){ cur = max(cur, dp[x] + 1); d.push_back(x); } for(int j : d){ dp[j] = cur; } } cout << *max_element(dp, dp + MAX_NUM) << endl;
Dengan mengikuti algoritma di atas, di sini kami telah menulis sintaks yang mungkin untuk mencari nilai GCD dengan subarray terpanjang lebih besar daripada 1.
Kaedah:
Kaedah 1−Program C++ untuk mencari subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1 melalui kaedah naif.
Kaedah 2 - Program C++ untuk mencari pembahagi sepunya terbesar bagi tatasusunan yang lebih besar daripada 1.
Program C++ untuk mencari subarray dengan pembahagi sepunya terpanjang lebih besar daripada 1 menggunakan kaedah naif
Dalam kod C++ ini, kami mengambil pendekatan naif untuk mencari nilai GCD bagi subarray terpanjang dengan lebih daripada 1 dengan menjana semua subarray yang mungkin bagi tatasusunan yang diberikan.
Terjemahan bahasa Cina bagiContoh 1
ialah:Contoh 1
#include <bits/stdc++.h> using namespace std; void maxSubarrayLen(int arr[], int n) { int maxLen = 0; for (int i = 0; i < n; i++) { int gcd = 0; for (int j = i; j < n; j++) { gcd = __gcd(gcd, arr[j]); if (gcd > 1) maxLen = max(maxLen, j - i + 1); else break; } } cout << maxLen; } int main() { int arr[] = { 410, 16, 7, 180, 222, 10, 33 }; int N = sizeof(arr) / sizeof(int); maxSubarrayLen(arr, N); return 0; }
Output
3
Atur cara C++ untuk mencari pembahagi sepunya terbesar bagi tatasusunan yang lebih besar daripada 1
Dalam kod C++ ini kami cuba mengira pembahagi sepunya terbesar dan ia mempunyai keupayaan untuk menyemak sama ada ia lebih besar daripada 1.
Contoh 2
diterjemahkan sebagai:Contoh 2
#include<bits/stdc++.h> using namespace std; int gcd(int a, int b){ if (a == 0) return b; return gcd(b%a, a); } void bestArray(int arr[], int n){ bool even[n] = {false}; int ans = 0; for(int i = 0; i < n; i++){ ans = gcd(ans, arr[i]); if(arr[i] % 2 == 0) even[i] = true; } if(ans > 1) cout << 0 << endl; else { ans = 0; for(int i = 0; i < n-1; i++){ if(!even[i]){ even[i] = true; even[i+1] = true; if(arr[i+1]%2 != 0){ ans+=1; } else ans+=2; } } if(!even[n-1]){ ans+=2; } cout << ans << endl; } } int main(){ int arr[] = {16, 10, 07, 81, 88, 32, 3, 42, 25}; int n = 9; bestArray(arr, n); int arr1[] = {16, 7}; n = 2; bestArray(arr1, n); int arr2[] = {10, 97, 2001}; n = 3; bestArray(arr2, n); }
Output
5 2 1
Kesimpulan
Melalui perbincangan ini, kita boleh mengetahui cara mencari subarray terpanjang yang GCDnya lebih besar daripada 1. Mudah-mudahan algoritma dan kod C++ yang ditulis akan menunjukkan dengan jelas kepada anda bagaimana proses ini berfungsi di dunia nyata.
Atas ialah kandungan terperinci Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Walaupun definisi makro fungsi boleh memudahkan kod dan meningkatkan prestasi, ia juga mempunyai kelemahan: jenis tidak selamat, kesukaran penyahpepijatan, konflik penamaan dan redundansi kod. Selepas menimbang kebaikan dan keburukan, adalah penting untuk membuat keputusan termaklum apabila menggunakan makro fungsi.

Penjelasan terperinci tentang kaedah mencari pembahagi sepunya terbesar dalam bahasa C Pembahagi sepunya terbesar (GCD, Pembahagi Sepunya Terhebat) ialah konsep yang biasa digunakan dalam matematik, yang merujuk kepada pembahagi terbesar di antara beberapa integer. Dalam bahasa C, kita boleh menggunakan banyak kaedah untuk mencari pembahagi sepunya yang paling hebat. Artikel ini akan memperincikan beberapa kaedah biasa ini dan memberikan contoh kod khusus. Kaedah 1: Pembahagian Euclidean ialah kaedah klasik untuk mencari pembahagi sepunya terbesar bagi dua nombor. Idea asasnya ialah membahagikan pembahagi dan baki dua nombor secara berterusan

Mekanisme panggilan fungsi dalam C++ melibatkan menghantar argumen kepada fungsi dan melaksanakan kodnya, mengembalikan hasilnya jika wujud. Terdapat dua cara untuk lulus parameter: lulus mengikut nilai (pengubahsuaian dibuat di dalam fungsi) dan lulus melalui rujukan (pengubahsuaian ditunjukkan dalam pemanggil). Dalam penghantaran nilai, pengubahsuaian nilai dalam fungsi tidak menjejaskan nilai asal (seperti printValue), manakala pengubahsuaian dalam hantaran rujukan mempengaruhi nilai asal (seperti printReference).

Kami mempunyai dua tatasusunan integer, satu dengan elemen yang dikira dan satu lagi dengan titik pisah yang diperlukan untuk memisahkan tatasusunan untuk menghasilkan subset, kita perlu mengira jumlah setiap subset dalam setiap pecahan dan mengembalikan subset maksimum Mari kita lihat contoh Pemahaman: - input −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1}; 13,9,9] Penjelasan − Di sini kita menguraikan tatasusunan mengikut titik pecahannya dan mendapatkan subset maksimum selepas setiap pecahan dan selepas pecahan pertama → {9} dan {4,5,6,7 }>>Jumlah maksimum subarray ialah -22 selepas pemisahan kedua→{9},{4

Pembahagi sepunya terbesar boleh didapati dengan menggunakan algoritma Euclidean dalam bahasa C. Prinsipnya ialah: pembahagi sepunya terbesar bagi dua integer a dan b adalah sama dengan baki a dibahagikan dengan b dan pembahagi sepunya terbesar bagi c dan b. Algoritma ini sangat cekap dan boleh menyelesaikan dengan cepat walaupun berurusan dengan nombor yang besar.

Pengarang asal: 0xSea.eth Pada ketinggian blok 840,000, Bitcoin akan memulakan separuh keempatnya, dengan ganjaran blok dikurangkan daripada 6.25 BTC kepada 3.125 BTC Ini adalah peristiwa utama yang diberi perhatian oleh seluruh industri penyulitan. Dalam ekosistem Bitcoin, hampir semua orang memberi perhatian kepada protokol Runes, yang akan berada dalam talian dengan ketinggian blok 840,000. Bagaimanakah protokol Runes akan mengubah landskap ekosistem protokol lapisan Bitcoin? Apakah kesannya terhadap BRC-20, Atomics dan protokol lain? Sebagai pemerhati dan pemain, pada malam separuh masa dan pelancaran Runes, saya ingin menyelesaikan beberapa pemikiran saya baru-baru ini di pasaran. Protokol token satu lapisan Titik Pandangan Teras 1/Bitcoin akan membentuk BRC-20, Atomi

Dalam artikel ini, kami akan menggunakan C++ untuk menyelesaikan masalah mencari bilangan subarray yang nilai maksimum dan minimumnya adalah sama. Berikut ialah contoh masalah −Input:array={2,3,6,6,2,4,4,4}Output:12Penjelasan:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}dan{4,4,4}arethesubarraysyang boleh dibentuk denganmaksimumdanminimumelemensama.Input:array={3, 3, 1,5,

Tajuk: Gunakan pengaturcaraan bahasa C untuk melaksanakan penyelesaian pembahagi sepunya terhebat Pembahagi sepunya terbesar (pendek kata GCD) merujuk kepada integer positif terbesar yang boleh membahagi dua atau lebih integer pada masa yang sama. Penyelesaian untuk pembahagi sepunya yang paling hebat boleh sangat membantu untuk beberapa algoritma dan penyelesaian masalah. Dalam artikel ini, fungsi mencari pembahagi sepunya terbesar akan dilaksanakan melalui pengaturcaraan bahasa C, dan contoh kod khusus akan disediakan. Dalam bahasa C, anda boleh menggunakan Algoritma Euclidean untuk menyelesaikan maksimum
