কম্পিউটার টিউটোরিয়াল

C++-এ H-ইন্ডেক্স


এক গবেষকের সাইটেশন (উদ্ধৃতি) অ্যারে দেওয়া আছে (নন-নেগেটিভ পূর্ণসংখ্যা)। গবেষকের h-ইন্ডেক্স ক্যালকুলেট করতে হবে। h-ইন্ডেক্সের ডেফিনিশন: "এক বিজ্ঞানীর ইন্ডেক্স h হলে তার N টি পেপারের মধ্যে h টির কমপক্ষে h কটা সাইটেশন আছে, আর বাকি N-h টির সর্বোচ্চ h সাইটেশন।"

উদাহরণ: citations = [3,0,6,1,7] হলে আউটপুট ৩। কারণ ৫ টি পেপার, সাইটেশন ৩,০,৬,১,৭। গবেষকের ৩ টি পেপারে কমপক্ষে ৩ সাইটেশন, বাকি ২ টিতে সর্বোচ্চ ৩ সাইটেশন, তাই h-ইন্ডেক্স ৩।

সমাধানের ধাপগুলো:

  • n := c.size(), আকার n+1-এর একটি অ্যারে bucket বানান।
  • i = 0 থেকে n-1 পর্যন্ত:
    • x := c[i]
    • যদি x >= n, bucket[n]++, অন্যথায় bucket[x]++
  • cnt := 0
  • i = n থেকে 0 পর্যন্ত:
    • cnt += bucket[i]
    • যদি cnt >= i, i ফেরত দিন।
  • -1 ফেরত দিন।

উদাহরণ (C++)

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int hIndex(vector<int>& c) {       int n = c.size();       vector <int> bucket(n + 1);       for(int i = 0; i < n; i++){          int x = c[i];          if(x >= n){             bucket[n]++;          } else {             bucket[x]++;          }       }       int cnt = 0;       for(int i = n; i >= 0; i--){          cnt += bucket[i];          if(cnt >= i)return i;       }       return -1;    } }; main(){    Solution ob;    vector<int> v = {3,0,6,1,7};    cout << (ob.hIndex(v)); }

ইনপুট

[3,0,6,1,7]

আউটপুট

3

  1. C++ Enum: একটি গাইড

  2. C++-এ Switch Statement: ব্যবহার করার পদ্ধতি

  3. Frugal সংখ্যা চেক করা (C++)

  4. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা