Maison  >  Article  >  développement back-end  >  Dans le programme C, traduisez la requête de plage de tableau avec des éléments de même fréquence

Dans le programme C, traduisez la requête de plage de tableau avec des éléments de même fréquence

WBOY
WBOYavant
2023-09-09 20:45:121392parcourir

Dans le programme C, traduisez la requête de plage de tableau avec des éléments de même fréquence

Ici, nous verrons une question intéressante. Nous avons un tableau avec N éléments. Nous devons exécuter une requête Q comme suit :

Q(start, end) signifie que du début à la fin, le nombre « p » apparaît exactement « p » fois. p>

Donc, si le tableau ressemble à : {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8} et que la requête est -

Q(1, 8) - ici 1 apparaît une fois, 3 apparaît 3 fois. La réponse est donc 2

Q(0, 2) - où 1 apparaît une fois. La réponse est donc 1

algorithme

requête(s, 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

exemple

#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;
   }
}

sortie

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Nombre de selfies palindromesArticle suivant:Nombre de selfies palindromes