কম্পিউটার

C++ এ ত্রিভুজ


ধরুন আমাদের একটি ত্রিভুজ আছে। আমাদের উপরের থেকে নীচের সর্বনিম্ন পথের যোগফল খুঁজে বের করতে হবে। প্রতিটি ধাপে, আমরা নীচের সারিতে সংলগ্ন সংখ্যায় যেতে পারি।

উদাহরণস্বরূপ, যদি নিচের ত্রিভুজটি

এর মত হয়
[
      [2],
     [3,4],
    [6,5,7],
   [4,1,8,3]
]

উপর থেকে নীচের সর্বনিম্ন পথের যোগফল হল 11 (2 + 3 + 5 + 1 =11)।

চলুন ধাপগুলো দেখি −

  • ডায়নামিক প্রোগ্রামিং পদ্ধতিতে ব্যবহার করার জন্য একটি টেবিল তৈরি করুন।

  • n :=ত্রিভুজের আকার

  • i এর জন্য :=n – 2 থেকে 0

    নিচে
    • j :=0 থেকে i

      এর জন্য
      • dp[j] :=ত্রিভুজ[i, j] + ন্যূনতম dp[j] এবং dp[j + 1]

  • dp[0]

    ফেরত দিন

উদাহরণ(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minimumTotal(vector<vector<int>>& triangle) {
      vector <int> dp(triangle.back());
      int n = triangle.size();
      for(int i = n - 2; i >= 0; i--){
         for(int j = 0; j <= i; j++){
            dp[j] = triangle[i][j] + min(dp[j], dp[j + 1]);
         }
      }
      return dp[0];
   }
};
main(){
   Solution ob;
   vector<vector<int> > v = {{2},{3,4},{6,5,7},{4,1,8,3}};
   cout << ob.minimumTotal(v);
}

ইনপুট

[[2],[3,4],[6,5,7],[4,1,8,3]]

আউটপুট

11

  1. C++ এ একটি ত্রিভুজের পরিধি খুঁজুন

  2. C++ এ ত্রিভুজের সেন্ট্রোয়েড খুঁজে বের করার প্রোগ্রাম

  3. C++ এ একটি সমান্তরালগ্রামের ভিতরে একটি ত্রিভুজের ক্ষেত্রফল

  4. C++ এ fdim()