Jadual Kandungan
Algoritma untuk mencari subarray terpanjang dengan GCD lebih daripada 1
Sintaks untuk mencari subarray terpanjang yang GCDnya lebih besar daripada 1
Kaedah:
Program C++ untuk mencari subarray dengan pembahagi sepunya terpanjang lebih besar daripada 1 menggunakan kaedah naif
Contoh 2
Output
Atur cara C++ untuk mencari pembahagi sepunya terbesar bagi tatasusunan yang lebih besar daripada 1
Kesimpulan
Rumah pembangunan bahagian belakang C++ Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1

Subarray terpanjang yang pembahagi sepunya terbesar adalah lebih besar daripada 1

Sep 18, 2023 pm 10:17 PM
pembahagi sepunya terbesar bawahan

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

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

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 bagi

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

Output

3
Salin selepas log masuk

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

Output

5
2
1
Salin selepas log masuk

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah kelebihan dan kekurangan definisi makro fungsi C++? Apakah kelebihan dan kekurangan definisi makro fungsi C++? Apr 11, 2024 pm 04:54 PM

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 cara menggunakan bahasa C untuk mencari pembahagi sepunya terbesar Penjelasan terperinci tentang cara menggunakan bahasa C untuk mencari pembahagi sepunya terbesar Feb 18, 2024 pm 11:10 PM

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

Penjelasan terperinci tentang mekanisme panggilan fungsi C++ Penjelasan terperinci tentang mekanisme panggilan fungsi C++ Apr 11, 2024 pm 02:12 PM

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).

Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Di Jawa, cari jumlah subarray maksimum subarray selepas membahagikan tatasusunan kepada subarray berdasarkan pertanyaan yang diberikan Aug 29, 2023 am 11:21 AM

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

Bagaimana untuk mencari pembahagi sepunya terbesar dalam bahasa C Bagaimana untuk mencari pembahagi sepunya terbesar dalam bahasa C Sep 27, 2023 am 09:41 AM

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.

Mengambil kira tiga negara yang membunuh protokol lapisan 1 Bitcoin: BRC-20, Atomics, Runes Mengambil kira tiga negara yang membunuh protokol lapisan 1 Bitcoin: BRC-20, Atomics, Runes Apr 23, 2024 pm 02:01 PM

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

Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Tulis kod menggunakan C++ untuk mencari bilangan subarray dengan nilai minimum dan maksimum yang sama Aug 25, 2023 pm 11:33 PM

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,

Menggunakan pengaturcaraan bahasa C untuk menyelesaikan pembahagi sepunya terbesar Menggunakan pengaturcaraan bahasa C untuk menyelesaikan pembahagi sepunya terbesar Feb 21, 2024 pm 07:30 PM

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

See all articles