কম্পিউটার

বৃত্তাকার স্টেশন থেকে কম দূরত্ব পেতে C++ কোড


ধরুন আমাদের দুটি সংখ্যা s এবং t, এবং n উপাদান সহ আরেকটি অ্যারে D আছে। ড্রিমল্যান্ড সাবওয়ের সার্কেল লাইনে বিভিন্ন স্টেশন রয়েছে। আমরা প্রতিবেশী স্টেশনগুলির সমস্ত জোড়ার মধ্যে দূরত্ব জানি:D[i] হল স্টেশন i এবং i+1 এর মধ্যে দূরত্ব, এবং D[n-1] হল (n-1) এবং 0ম স্টেশনের মধ্যে দূরত্ব। আমাদের s থেকে t পর্যন্ত সবচেয়ে কম দূরত্ব খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s =1 এর মত হয়; t =3; D =[2, 3, 4, 9], তাহলে আউটপুট হবে 5।

পদক্ষেপ

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

n := size of D
Define an array arr of size (n + 1), and fill with 0
for initialize i := 1, when i <= n, update (increase i by 1), do:
   arr[i] := D[i - 1]
   sum1 := sum1 + arr[i]
if s > t, then:
   swap s and t
for initialize i := s, when i < t, update (increase i by 1), do:
   sum2 := sum2 + arr[i]
return minimum of sum2 and (sum1 - sum2)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
int solve(int s, int t, vector<int> D){
   int n = D.size(), sum1 = 0, sum2 = 0;
   vector<int> arr(n + 1, 0);
   for (int i = 1; i <= n; i++){
      arr[i] = D[i - 1];
      sum1 += arr[i];
   }
   if (s > t)
      swap(s, t);
   for (int i = s; i < t; i++)
      sum2 += arr[i];
   return min(sum2, sum1 - sum2);
}
int main(){
   int s = 1;
   int t = 3;
   vector<int> D = { 2, 3, 4, 9 };
   cout << solve(s, t, D) << endl;
}

ইনপুট

1, 3, { 2, 3, 4, 9 }

আউটপুট

5

  1. C++ এ সবচেয়ে ছোট প্যালিনড্রোম

  2. C++ এ দূরত্ব সম্পাদনা করুন

  3. C++ এ টার্গেট কালার থেকে সবচেয়ে কম দূরত্ব

  4. C++ এ প্রদত্ত নোড থেকে k দূরত্বে সমস্ত নোড প্রিন্ট করুন