Heim > Backend-Entwicklung > C++ > Hauptteil

Übersetzen Sie in einem C-Programm die Array-Bereichsabfrage mit Elementen mit derselben Häufigkeit

WBOY
Freigeben: 2023-09-09 20:45:12
nach vorne
1418 Leute haben es durchsucht

Übersetzen Sie in einem C-Programm die Array-Bereichsabfrage mit Elementen mit derselben Häufigkeit

Hier sehen wir eine interessante Frage. Wir haben ein Array mit N Elementen. Wir müssen eine Abfrage Q wie folgt ausführen:

Q(start, end) bedeutet, dass die Zahl „p“ von Anfang bis Ende genau „p“-mal vorkommt. p>

Wenn das Array also wie folgt aussieht: {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8} und die Abfrage -

Q(1, 8) lautet, erscheint hier 1 einmal, 3 erscheint dreimal. Die Antwort lautet also 2

Q(0, 2) – wobei 1 einmal vorkommt. Die Antwort lautet also 1

Algorithmus

Abfrage(n, e) -

Begin
   get the elements and count the frequency of each element ‘e’ into one map
   count := count + 1
   for each key-value pair p, do
      if p.key = p.value, then
         count := count + 1
      done
      return count;
End
Nach dem Login kopieren

Beispiel

#include <iostream>
#include <map>
using namespace std;
int query(int start, int end, int arr[]) {
   map<int, int> freq;
   for (int i = start; i <= end; i++) //get element and store frequency
      freq[arr[i]]++;
   int count = 0;
   for (auto x : freq)
      if (x.first == x.second) //when the frequencies are same, increase count count++;
   return count;
}
int main() {
   int A[] = {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8};
   int n = sizeof(A) / sizeof(A[0]);
   int queries[][3] = {{ 0, 1 },
      { 1, 8 },
      { 0, 2 },
      { 1, 6 },
      { 3, 5 },
      { 7, 9 }
   };
   int query_count = sizeof(queries) / sizeof(queries[0]);
   for (int i = 0; i < query_count; i++) {
      int start = queries[i][0];
      int end = queries[i][1];
      cout << "Answer for Query " << (i + 1) << " = " << query(start, end, A) << endl;
   }
}
Nach dem Login kopieren

Ausgabe

Answer for Query 1 = 1
Answer for Query 2 = 2
Answer for Query 3 = 1
Answer for Query 4 = 1
Answer for Query 5 = 1
Answer for Query 6 = 0
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonÜbersetzen Sie in einem C-Programm die Array-Bereichsabfrage mit Elementen mit derselben Häufigkeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage