


Program C++ untuk mencari bilangan matriks unik yang boleh dijana dengan menukar baris dan lajur
Andaikan kita mempunyai matriks n x n. Setiap elemen dalam matriks adalah unik dan integer antara 1 dan n2. Sekarang kita boleh melakukan operasi berikut dalam sebarang nombor dan dalam sebarang susunan.
Kami memilih mana-mana dua integer x dan y dalam matriks di mana (1 ≤ x
Kami memilih mana-mana dua integer x dan y dalam matriks di mana (1 ≤ x
Kita mesti ambil perhatian bahawa x + y ≤ k dan nilai ini tidak boleh muncul dalam baris dan lajur yang sama.
Kita perlu mengetahui bilangan matriks unik yang boleh diperolehi dengan melakukan operasi.
Jadi jika input adalah seperti n = 3, k = 15, mat = {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}, maka output akan 36.
Sebagai contoh, dua nilai yang dipilih ialah x = 3 dan y = 5. Jika anda menukar lajur, matriks yang terhasil ialah -
3 4 6 9 5 7 2 1 8
Dengan cara ini anda boleh mendapatkan 36 matriks unik tersebut.
Untuk menyelesaikan masalah ini kami akan mengikuti langkah berikut -
Define a function dfs(), this will take k, arrays ver and visited, one stack s. if visited[k] is non-zero, then: return visited[k] := true insert k into s for initialize iterator j := start of ver[k], when j is not equal to last element of ver[k], update (increase j by 1), do: dfs(*j, ver, visited, s) Define an array f of size: 51. f[0] := 1 for initialize i := 1, when i <= 50, update (increase i by 1), do: f[i] := (i * f[i - 1]) mod modval Define an array e of size n Define an array pk of size n for initialize i := 0, when i < n, update (increase i by 1), do: for initialize j := i + 1, when j < n, update (increase j by 1), do: chk := 0 for initialize l := 0, when l < n, update (increase l by 1), do: if (mat[i, l] + mat[j, l]) > k, then: chk := 1 Come out from the loop if chk is same as 0, then: insert j at the end of pk[i] insert i at the end of pk[j] chk := 0 for initialize l := 0, when l < n, update (increase l by 1), do: if (mat[l, i] + mat[l, j]) > k, then: chk := 1 Come out from the loop if chk is same as 0, then: insert j at the end of e[i] insert i at the end of e[j] resa := 1, resb = 1 Define an array v1 of size: n and v2 of size: n. for initialize i := 0, when i < n, update (increase i by 1), do: v1[i] := false v2[i] := false for initialize i := 0, when i < n, update (increase i by 1), do: Define one stack s. if not v1[i] is non-zero, then: dfs(i, pk, v1, s) if not s is empty, then: resa := resa * (f[size of s]) resa := resa mod modval for initialize i := 0, when i < n, update (increase i by 1), do: Define one stack s if not v2[i] is non-zero, then: dfs(i, e, v2, s) if not s is empty, then: resb := resb * (f[size of s]) resb := resb mod modval print((resa * resb) mod modval)
Contoh
Mari kita lihat pelaksanaan berikut untuk pemahaman yang lebih baik -
#include <bits/stdc++.h> using namespace std; #define modval 998244353 const int INF = 1e9; void dfs(int k, vector<int> ver[], bool visited[], stack<int> &s) { if(visited[k]) return; visited[k] = true; s.push(k); for(vector<int> :: iterator j = ver[k].begin(); j!=ver[k].end(); j++) dfs(*j, ver, visited, s); } void solve(int n, int k, vector<vector<int>> mat) { int f[51]; f[0] = 1; for(int i = 1; i <= 50; i++) { f[i] = (i * f[i-1]) % modval; } vector<int> e[n]; vector<int> pk[n]; for(int i = 0; i < n; i++) { for(int j = i + 1;j < n; j++) { int chk = 0; for(int l = 0; l < n; l++){ if((mat[i][l] + mat[j][l]) > k) { chk = 1; break; } } if(chk==0) { pk[i].push_back(j); pk[j].push_back(i); } chk = 0; for(int l = 0;l < n; l++) { if((mat[l][i] + mat[l][j]) > k){ chk = 1; break; } } if(chk == 0) { e[i].push_back(j); e[j].push_back(i); } } } int resa = 1, resb = 1; bool v1[n], v2[n]; for(int i = 0; i < n; i++) { v1[i] = false; v2[i] = false; } for(int i = 0;i < n; i++) { stack<int> s; if(!v1[i]) { dfs(i, pk, v1, s); if(!s.empty()) { resa *= (f[s.size()]) % modval; resa %= modval; } } } for(int i = 0 ;i < n; i++) { stack<int> s; if(!v2[i]){ dfs(i, e, v2, s); if(!s.empty()) { resb *= (f[s.size()]) % modval; resb %= modval; } } } cout<< (resa * resb) % modval; } int main() { int n = 3, k = 15; vector<vector<int>> mat = {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}; solve(n, k, mat); return 0; }
Input
3, 15, {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}
Output
36
Atas ialah kandungan terperinci Program C++ untuk mencari bilangan matriks unik yang boleh dijana dengan menukar baris dan lajur. 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



Dalam artikel pertama siri ini, kami membincangkan hubungan dan perbezaan antara kecerdasan buatan, pembelajaran mesin, pembelajaran mendalam, sains data dan banyak lagi. Kami juga membuat beberapa pilihan sukar tentang bahasa pengaturcaraan, alatan dan banyak lagi yang akan digunakan oleh keseluruhan siri. Akhirnya, kami juga memperkenalkan sedikit ilmu matriks. Dalam artikel ini, kita akan membincangkan secara mendalam matriks, teras kecerdasan buatan. Tetapi sebelum itu, mari kita fahami dahulu sejarah kecerdasan buatan. Mengapa kita perlu memahami sejarah kecerdasan buatan? Terdapat banyak ledakan AI dalam sejarah, tetapi dalam banyak kes jangkaan besar untuk potensi AI gagal menjadi kenyataan. Memahami sejarah kecerdasan buatan boleh membantu kita melihat sama ada gelombang kecerdasan buatan ini akan mencipta keajaiban atau hanya gelembung lain yang akan pecah. kami

Ruang swap memainkan peranan penting dalam sistem Linux, terutamanya apabila sistem kekurangan ingatan. Ia bertindak sebagai ruang storan memori sandaran yang membantu sistem berjalan dengan lancar dan mengekalkan kestabilan walaupun di bawah beban yang tinggi. Artikel ini memberi anda panduan terperinci untuk menambah ruang swap pada Ubuntu 22.04LTS untuk memastikan prestasi sistem anda dioptimumkan dan boleh mengendalikan pelbagai beban kerja. Memahami Ruang Swap Space Swap menyediakan memori maya yang digunakan untuk menambah RAM fizikal sistem. Apabila sistem kekurangan RAM, kernel menukar data ke cakera untuk mengelakkan kehabisan memori dan sistem ranap. Sistem Linux biasanya menggunakan ruang swap untuk mengendalikan situasi ini. Jalankan berbilang aplikasi intensif memori secara serentak untuk memproses fail atau data yang sangat besar

Bahasa pengaturcaraan tujuan umum yang popular ialah Python. Ia digunakan dalam pelbagai industri, termasuk aplikasi desktop, pembangunan web dan pembelajaran mesin. Nasib baik, Python mempunyai sintaks yang ringkas dan mudah difahami yang sesuai untuk pemula. Dalam artikel ini, kita akan menggunakan Python untuk mengira jumlah pepenjuru kanan matriks. Apakah matriks? Dalam matematik, kami menggunakan tatasusunan atau matriks segi empat tepat untuk menerangkan objek matematik atau sifatnya Ia adalah tatasusunan atau jadual segi empat tepat yang mengandungi nombor, simbol atau ungkapan yang disusun dalam baris dan lajur. Contohnya -234512367574 Oleh itu, ini ialah matriks dengan 3 baris dan 4 lajur, dinyatakan sebagai matriks 3*4. Kini, terdapat dua pepenjuru dalam matriks, pepenjuru primer dan pepenjuru sekunder

Dalam artikel ini, kita akan belajar cara mengira penentu matriks menggunakan perpustakaan numpy dalam Python. Penentu matriks ialah nilai skalar yang boleh mewakili matriks dalam bentuk padat. Ia merupakan kuantiti yang berguna dalam algebra linear dan mempunyai banyak aplikasi dalam pelbagai bidang termasuk fizik, kejuruteraan, dan sains komputer. Dalam artikel ini, kita akan membincangkan definisi dan sifat penentu terlebih dahulu. Kami kemudian akan belajar cara menggunakan numpy untuk mengira penentu matriks dan melihat cara ia digunakan dalam amalan melalui beberapa contoh. Penentu kefamatriks ialah nilai skala yang boleh digunakan untuk menerangkan sifat

Matriks ialah satu set nombor yang disusun dalam baris dan lajur. Matriks dengan m baris dan n lajur dipanggil matriks mXn, dan m dan n dipanggil dimensinya. Matriks ialah tatasusunan dua dimensi yang dibuat dalam Python menggunakan senarai atau tatasusunan NumPy. Secara umum, pendaraban matriks boleh dilakukan dengan mendarab baris matriks pertama dengan lajur matriks kedua. Di sini, bilangan lajur matriks pertama hendaklah sama dengan bilangan baris matriks kedua. Senario input dan output Katakan kita mempunyai dua matriks A dan B. Dimensi kedua-dua matriks ini ialah 2X3 dan 3X2 masing-masing. Matriks yang terhasil selepas pendaraban akan mempunyai 2 baris dan 1 lajur. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

Faktor perdana unik juga merupakan faktor nombor perdana. Dalam masalah ini, kita perlu mencari hasil darab semua faktor perdana unik bagi sesuatu nombor. Nombor perdana ialah nombor dengan hanya dua faktor, nombor dan satu. Di sini kita akan cuba mencari cara terbaik untuk mengira hasil darab faktor perdana unik bagi sesuatu nombor. nombor. Mari kita ambil contoh untuk menggambarkan masalah dengan lebih jelas. Terdapat nombor n=1092, dan kita mesti mencari hasil darab faktor perdana uniknya. Faktor perdana bagi 1092 ialah 2,3,7,13 dan hasil darabnya ialah 546. 2Cara mudah untuk mencari ini ialah mencari semua faktor nombor itu dan menyemak sama ada faktor itu ialah nombor perdana. Jika ia kemudian didarab dengan nombor maka pembolehubah pendaraban dikembalikan. Input:n=10Output:10 diterangkan di sini, input

Pengguna mesti memasukkan susunan kedua-dua matriks serta unsur-unsur kedua-dua matriks. Kemudian, bandingkan kedua-dua matriks. Dua matriks adalah sama jika kedua-dua elemen dan saiz matriks adalah sama. Jika matriks adalah sama dalam saiz tetapi tidak sama dalam unsur, maka matriks ditunjukkan sebagai sebanding tetapi tidak sama. Jika saiz dan elemen tidak sepadan, matriks paparan tidak boleh dibandingkan. Program berikut ialah atur cara C, digunakan untuk membandingkan sama ada dua matriks adalah sama-#include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] dalam

Dalam operasi media sosial, aliran balik akaun matriks ialah strategi biasa Dengan mengarahkan trafik antara akaun yang berbeza, peminat boleh saling melengkapi dan meningkatkan aktiviti mereka. Aliran balik antara akaun matriks memerlukan perancangan dan pelaksanaan yang teliti, dan bukan perkara yang mudah. Artikel ini akan membincangkan secara terperinci cara melaksanakan pembalikan antara akaun yang berbeza dan kepentingan penyongsangan matriks. 1. Bagaimana untuk menterbalikkan akaun dalam matriks? Antara akaun matriks, adalah penting untuk memilih akaun utama, yang akan menjadi sumber trafik utama dan platform untuk keluaran kandungan teras. Perancangan kandungan adalah untuk merumuskan rancangan kandungan yang sepadan berdasarkan ciri akaun dan khalayak sasaran untuk memastikan kualiti dan gaya kandungan yang konsisten. 3. Mengesyorkan dan menyukai satu sama lain: mempromosikan dan menyukai antara satu sama lain antara akaun matriks, dan membimbing peminat melalui susun atur dan pengaturan yang munasabah.
