Inhaltsverzeichnis
Beispiel
Eingabe
Ausgabe
Heim Backend-Entwicklung C++ C++-Programm zum Ermitteln der Anzahl eindeutiger Matrizen, die durch Vertauschen von Zeilen und Spalten generiert werden können

C++-Programm zum Ermitteln der Anzahl eindeutiger Matrizen, die durch Vertauschen von Zeilen und Spalten generiert werden können

Sep 01, 2023 am 11:53 AM
矩阵 交换 唯一

C++-Programm zum Ermitteln der Anzahl eindeutiger Matrizen, die durch Vertauschen von Zeilen und Spalten generiert werden können

Angenommen, wir haben eine n x n-Matrix. Jedes Element in der Matrix ist einzigartig und eine ganze Zahl zwischen 1 und n2. Jetzt können wir die folgenden Operationen in beliebiger Anzahl und Reihenfolge ausführen.

  • Wir wählen zwei beliebige ganze Zahlen x und y in der Matrix aus, wobei (1 ≤ x

  • Wir wählen zwei beliebige ganze Zahlen x und y in der Matrix aus, wobei (1 ≤ x

  • Wir müssen beachten, dass x + y ≤ k und diese Werte nicht in derselben Zeile und Spalte erscheinen können.

Wir müssen die Anzahl der eindeutigen Matrizen herausfinden, die durch die Durchführung der Operation erhalten werden können.

Wenn die Eingabe also etwa n = 3, k = 15, mat = {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}} ist, dann ist die Ausgabe 36.

Zum Beispiel sind die beiden gewählten Werte x = 3 und y = 5. Wenn Sie die Spalten vertauschen, lautet die resultierende Matrix -

3 4 6
9 5 7
2 1 8
Nach dem Login kopieren

Auf diese Weise können Sie 36 solcher eindeutigen Matrizen erhalten.

Um dieses Problem zu lösen, werden wir die folgenden Schritte ausführen:

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)
Nach dem Login kopieren

Beispiel

Sehen wir uns zum besseren Verständnis die folgende Implementierung an:

#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;
}
Nach dem Login kopieren

Eingabe

3, 15, {{4, 3, 6}, {5, 9, 7}, {1, 2, 8}}
Nach dem Login kopieren

Ausgabe

36
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonC++-Programm zum Ermitteln der Anzahl eindeutiger Matrizen, die durch Vertauschen von Zeilen und Spalten generiert werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erkundung der Geschichte und Matrix der künstlichen Intelligenz: Tutorial zur künstlichen Intelligenz (2) Erkundung der Geschichte und Matrix der künstlichen Intelligenz: Tutorial zur künstlichen Intelligenz (2) Nov 20, 2023 pm 05:25 PM

Im ersten Artikel dieser Reihe haben wir die Zusammenhänge und Unterschiede zwischen künstlicher Intelligenz, maschinellem Lernen, Deep Learning, Datenwissenschaft und mehr diskutiert. Wir haben auch einige schwierige Entscheidungen hinsichtlich der Programmiersprachen, Tools und mehr getroffen, die in der gesamten Serie verwendet werden sollen. Abschließend haben wir noch ein wenig Matrixwissen eingeführt. In diesem Artikel werden wir die Matrix, den Kern der künstlichen Intelligenz, ausführlich besprechen. Aber vorher wollen wir zunächst die Geschichte der künstlichen Intelligenz verstehen. Warum müssen wir die Geschichte der künstlichen Intelligenz verstehen? In der Geschichte gab es viele KI-Booms, aber in vielen Fällen blieben die großen Erwartungen an das Potenzial der KI aus. Das Verständnis der Geschichte der künstlichen Intelligenz kann uns helfen zu erkennen, ob diese Welle der künstlichen Intelligenz Wunder bewirken wird oder nur eine weitere Blase ist, die kurz vor dem Platzen steht. uns

Wie berechnet man die Determinante einer Matrix oder eines ndArrays mit Numpy in Python? Wie berechnet man die Determinante einer Matrix oder eines ndArrays mit Numpy in Python? Aug 18, 2023 pm 11:57 PM

In diesem Artikel erfahren Sie, wie Sie die Determinante einer Matrix mithilfe der Numpy-Bibliothek in Python berechnen. Die Determinante einer Matrix ist ein Skalarwert, der die Matrix in kompakter Form darstellen kann. Es ist eine nützliche Größe in der linearen Algebra und hat zahlreiche Anwendungen in verschiedenen Bereichen, darunter Physik, Ingenieurwesen und Informatik. In diesem Artikel besprechen wir zunächst die Definition und Eigenschaften von Determinanten. Anschließend lernen wir, wie man Numpy zur Berechnung der Determinante einer Matrix verwendet, und sehen anhand einiger Beispiele, wie es in der Praxis verwendet wird. Die Determinante einer Matrix ist ein Larwert, der zur Beschreibung der Eigenschaft verwendet werden kann

So fügen Sie Swap-Speicherplatz unter Ubuntu 22.04 LTS hinzu So fügen Sie Swap-Speicherplatz unter Ubuntu 22.04 LTS hinzu Feb 20, 2024 am 11:12 AM

Swap Space spielt in Linux-Systemen eine wichtige Rolle, insbesondere wenn das System nur wenig Arbeitsspeicher hat. Es fungiert als Backup-Speicherplatz, der dazu beiträgt, dass das System auch unter hoher Last reibungslos läuft und die Stabilität aufrechterhält. Dieser Artikel bietet Ihnen eine detaillierte Anleitung zum Hinzufügen von Swap-Speicherplatz unter Ubuntu 22.04LTS, um sicherzustellen, dass die Leistung Ihres Systems optimiert ist und verschiedene Arbeitslasten bewältigen kann. Swap Space verstehen Swap Space stellt virtuellen Speicher bereit, der als Ergänzung zum physischen RAM des Systems verwendet wird. Wenn das System nur noch wenig RAM hat, lagert der Kernel Daten auf die Festplatte aus, um Speichermangel und Systemabstürze zu verhindern. Linux-Systeme verwenden üblicherweise Swap Space, um diese Situation zu bewältigen. Führen Sie mehrere speicherintensive Anwendungen gleichzeitig aus, um sehr große Dateien oder Daten zu verarbeiten

Python-Programm zur Berechnung der Summe der rechtsdiagonalen Elemente einer Matrix Python-Programm zur Berechnung der Summe der rechtsdiagonalen Elemente einer Matrix Aug 19, 2023 am 11:29 AM

Eine beliebte Allzweck-Programmiersprache ist Python. Es wird in einer Vielzahl von Branchen eingesetzt, darunter Desktop-Anwendungen, Webentwicklung und maschinelles Lernen. Glücklicherweise verfügt Python über eine einfache und leicht verständliche Syntax, die für Anfänger geeignet ist. In diesem Artikel verwenden wir Python, um die Summe der rechten Diagonalen einer Matrix zu berechnen. Was ist eine Matrix? In der Mathematik verwenden wir ein rechteckiges Array oder eine Matrix, um ein mathematisches Objekt oder seine Eigenschaften zu beschreiben. Es handelt sich um ein rechteckiges Array oder eine Tabelle, die in Zeilen und Spalten angeordnete Zahlen, Symbole oder Ausdrücke enthält. Zum Beispiel -234512367574. Dies ist also eine Matrix mit 3 Zeilen und 4 Spalten, ausgedrückt als 3*4-Matrix. Nun gibt es in der Matrix zwei Diagonalen, die Primärdiagonale und die Sekundärdiagonale

Python-Programm zum Multiplizieren zweier Matrizen mithilfe mehrdimensionaler Arrays Python-Programm zum Multiplizieren zweier Matrizen mithilfe mehrdimensionaler Arrays Sep 11, 2023 pm 05:09 PM

Eine Matrix ist eine Menge von Zahlen, die in Zeilen und Spalten angeordnet sind. Eine Matrix mit m Zeilen und n Spalten wird als mXn-Matrix bezeichnet, und m und n werden als ihre Dimensionen bezeichnet. Eine Matrix ist ein zweidimensionales Array, das in Python mithilfe von Listen oder NumPy-Arrays erstellt wird. Im Allgemeinen kann die Matrixmultiplikation durch Multiplikation der Zeilen der ersten Matrix mit den Spalten der zweiten Matrix erfolgen. Dabei sollte die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix sein. Eingabe- und Ausgabeszenario Angenommen, wir haben zwei Matrizen A und B. Die Abmessungen dieser beiden Matrizen betragen 2X3 bzw. 3X2. Die resultierende Matrix nach der Multiplikation hat 2 Zeilen und 1 Spalte. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

C/C++-Programm zum Ermitteln des Produkts der eindeutigen Primfaktoren einer Zahl C/C++-Programm zum Ermitteln des Produkts der eindeutigen Primfaktoren einer Zahl Sep 18, 2023 am 10:01 AM

Ein eindeutiger Primfaktor ist auch ein Faktor einer Primzahl. Bei diesem Problem müssen wir das Produkt aller eindeutigen Primfaktoren einer Zahl finden. Eine Primzahl ist eine Zahl mit nur zwei Faktoren, der Zahl und Eins. Hier werden wir versuchen, den besten Weg zu finden, das Produkt der eindeutigen Primfaktoren einer Zahl zu berechnen. Nummer. Nehmen wir ein Beispiel, um das Problem deutlicher zu veranschaulichen. Es gibt eine Zahl n=1092 und wir müssen das Produkt ihrer eindeutigen Primfaktoren finden. Die Primfaktoren von 1092 sind 2,3,7,13 und das Produkt ist 546. 2Eine einfache Möglichkeit, dies herauszufinden, besteht darin, alle Faktoren der Zahl zu finden und zu prüfen, ob der Faktor eine Primzahl ist. Wird es dann mit einer Zahl multipliziert, wird die Multiplikationsvariable zurückgegeben. Input:n=10Output:10 wird hier erklärt, die Eingabe

C-Programm zum Vergleich zweier Matrizen auf Gleichheit C-Programm zum Vergleich zweier Matrizen auf Gleichheit Aug 31, 2023 pm 01:13 PM

Der Benutzer muss die Reihenfolge der beiden Matrizen sowie die Elemente beider Matrizen eingeben. Vergleichen Sie dann die beiden Matrizen. Zwei Matrizen sind gleich, wenn beide Matrixelemente und -größen gleich sind. Wenn die Matrizen gleich groß, aber nicht gleich in den Elementen sind, werden die Matrizen als vergleichbar, aber nicht gleich dargestellt. Wenn die Größen und Elemente nicht übereinstimmen, können die Anzeigematrizen nicht verglichen werden. Das folgende Programm ist ein C-Programm, das verwendet wird, um zu vergleichen, ob zwei Matrizen gleich sind: #include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] ; In

Wie storniere ich das Konto in der Matrix? Was bedeutet Matrixinversion? Wie storniere ich das Konto in der Matrix? Was bedeutet Matrixinversion? Mar 27, 2024 pm 12:16 PM

Im Social-Media-Bereich ist der Matrix-Account-Backflow eine gängige Strategie. Durch die Umleitung des Traffics zwischen verschiedenen Accounts können sich Fans gegenseitig ergänzen und ihre Aktivität steigern. Der Rückfluss zwischen Matrixkonten erfordert eine sorgfältige Planung und Ausführung und ist keine einfache Angelegenheit. In diesem Artikel wird ausführlich erläutert, wie eine Umkehrung zwischen verschiedenen Konten implementiert wird und welche Bedeutung die Matrixumkehr hat. 1. Wie storniere ich das Konto in der Matrix? Unter den Matrixkonten ist es entscheidend, ein Hauptkonto auszuwählen, das zur Hauptverkehrsquelle und Plattform für die Veröffentlichung von Kerninhalten wird. Bei der Inhaltsplanung geht es darum, entsprechende Inhaltspläne auf der Grundlage von Kontomerkmalen und Zielgruppen zu formulieren, um eine gleichbleibende Qualität und einen gleichbleibenden Stil der Inhalte sicherzustellen. 3. Empfehlen und liken Sie sich gegenseitig: Bewerben und liken Sie sich gegenseitig zwischen Matrix-Konten und führen Sie die Fans durch angemessene Layouts und Arrangements.

See all articles