কম্পিউটার

C++ এ 3-D অ্যারেতে ন্যূনতম সমষ্টি পথ


আমাদেরকে একটি কিউব দেওয়া হয়েছে যা একটি 3-ডি অ্যারে ব্যবহার করে কিউব[দৈর্ঘ্য][প্রস্থ][উচ্চতা] হিসাবে তৈরি করা যেতে পারে। কাজটি হল ন্যূনতম যোগফলের পথ গণনা করা যা কিউব অতিক্রম করে অর্জন করা হবে এবং তাই ফলাফলটি প্রিন্ট করা।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

− int কিউব[দৈর্ঘ্য][প্রস্থ][উচ্চতা] ={ { {2, 4, 1}, {3, 4, 5}, {9, 8, 7}}, { {5, 3, 2}, { 7, 6, 5}, {8, 7, 6}}, { {3, 2, 1}, {4, 3, 2}, {5, 4, 3}}}

আউট − 3-D অ্যারেতে ন্যূনতম সমষ্টির পথ হল:15

ব্যাখ্যা - আমাদের দৈর্ঘ্য, প্রস্থ এবং উচ্চতা সহ একটি ঘনক দেওয়া হয়েছে। এখন, আমরা 3-D অ্যারেতে ন্যূনতম যোগফলের পথ গণনা করব। সুতরাং, এটি 2 + 4 + 1 + 3 + 5 অর্থাৎ 15 থেকে শুরু হবে।

− int কিউব[দৈর্ঘ্য][প্রস্থ][উচ্চতা] ={ { {1, 2}, {7, 8}}, { {3, 5}, {9, 16}}}

আউট − 3-D অ্যারেতে ন্যূনতম সমষ্টি পথ হল:24

ব্যাখ্যা - আমাদের দৈর্ঘ্য, প্রস্থ এবং উচ্চতা সহ একটি ঘনক দেওয়া হয়েছে। এখন, আমরা 3-D অ্যারেতে ন্যূনতম যোগফলের পথ গণনা করব। সুতরাং, এটি 1 + 2 + 5 + 16 অর্থাৎ 24 থেকে শুরু হবে।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পূর্ণসংখ্যার প্রকারের মান সহ একটি ঘনক গঠন করতে একটি 3-ডি অ্যারে ইনপুট করুন। Minimum_SubPath(cube) হিসাবে ফাংশনে ডেটা পাস করুন।

  • Minimum_SubPath(কিউব)

    ফাংশনের ভিতরে
    • ঘনক্ষেত্রের মতো একই আকারের একটি অ্যারে তৈরি করুন এবং কিউব[0][0][0] থেকে আরার[0][0][0] শুরু করুন।

    • একটি ঘনক্ষেত্রের দৈর্ঘ্য পর্যন্ত i থেকে 1 পর্যন্ত লুপ শুরু করুন এবং arr[i][0][0] to arr[i-1][0][0] + কিউব[i][0][0] সেট করুন।

    • একটি ঘনক্ষেত্রের প্রস্থ পর্যন্ত j থেকে 1 পর্যন্ত লুপ শুরু করুন এবং arr[0][j][0] to arr[0][j-1][0] + কিউব[0][j][0] সেট করুন পি>

    • একটি ঘনক্ষেত্রের উচ্চতা পর্যন্ত k থেকে 1 পর্যন্ত FOR লুপ শুরু করুন এবং arr[0][0][k] থেকে arr[0][0][k-1] + কিউব[0][0][k] সেট করুন পি>

    • একটি কিউবের দৈর্ঘ্য পর্যন্ত i থেকে 1 পর্যন্ত FOR লুপ শুরু করুন এবং একটি অ্যারের প্রস্থ পর্যন্ত j থেকে 1 পর্যন্ত আরেকটি লুপ FOR শুরু করুন এবং min_val ন্যূনতম(arr[i-1][j][0], arr[i][ সেট করুন। j-1][0], INT_MAX) এবং arr[i][j][0] থেকে min_val + কিউব[i][j][0]

    • একটি কিউবের দৈর্ঘ্য পর্যন্ত i থেকে 1 পর্যন্ত FOR লুপ শুরু করুন এবং একটি অ্যারের উচ্চতা পর্যন্ত k থেকে 1 পর্যন্ত আরেকটি লুপ FOR শুরু করুন এবং min_val ন্যূনতম(arr[i-1][0][k], arr[i][ সেট করুন। 0][k-1], INT_MAX) এবং arr[i][0][k] =min_val + কিউব[i][0][k]

    • একটি কিউবের উচ্চতা পর্যন্ত k থেকে 1 পর্যন্ত FOR লুপ শুরু করুন এবং একটি অ্যারের প্রস্থ পর্যন্ত j থেকে 1 পর্যন্ত আরেকটি লুপ FOR শুরু করুন এবং min_val ন্যূনতম(arr[0][j][k-1], arr[0][এ সেট করুন। j-1][k], INT_MAX) এবং arr[0][j][k] =min_val + কিউব[0][j][k]

    • একটি কিউবের দৈর্ঘ্য পর্যন্ত i থেকে 1 পর্যন্ত FOR লুপ শুরু করুন এবং একটি অ্যারের প্রস্থ পর্যন্ত j থেকে 1 পর্যন্ত আরেকটি লুপ শুরু করুন এবং একটি কিউবের উচ্চতা পর্যন্ত k থেকে 1 থেকে আরেকটি লুপ শুরু করুন এবং min_val ন্যূনতম(arr[i-1) এ সেট করুন ][j][k], arr[i][j-1][k], arr[i][j][k-1]) এবং arr[i][j][k] =min_val + কিউব[ i][j][k]

    • রিটার্ন arr[length-1][breadth-1][height-1]

  • ন্যূনতম ফাংশনের ভিতরে(int a, int b, int c)

    • পরীক্ষা করুন যদি a b এর থেকে কম এবং a c এর কম তারপর a ফেরত দিন।

    • অন্যথায়, c

      ফেরত দিন
    • অন্যথায় IF, b এর থেকে কম c তারপর b

      ফেরত দিন
    • অন্যথায়, c

      ফেরত দিন

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
#define length 3
#define breadth 3
#define height 3

int Minimum(int a, int b, int c){
   if(a < b){
      if(a < c){
         return a;
      }
      else{
         return c;
      }
   }
   else if(b < c){
      return b;
   }
   else{
      return c;
   }
}
int Minimum_SubPath(int cube[][breadth][height]){
   int i, j, k;
   int arr[length][breadth][height];
   arr[0][0][0] = cube[0][0][0];

   for(i = 1; i < length; i++){
      arr[i][0][0] = arr[i-1][0][0] + cube[i][0][0];
   }
   for(j = 1; j < breadth; j++){
      arr[0][j][0] = arr[0][j-1][0] + cube[0][j][0];
   }
   for(k = 1; k < height; k++){
      arr[0][0][k] = arr[0][0][k-1] + cube[0][0][k];
   }
   for(i = 1; i < length; i++){
      for(j = 1; j < breadth; j++){
         int min_val = Minimum(arr[i-1][j][0], arr[i][j-1][0], INT_MAX);
         arr[i][j][0] = min_val + cube[i][j][0];
      }
   }
   for(i = 1; i < length; i++){
      for(k = 1; k < height; k++){
         int min_val = Minimum(arr[i-1][0][k], arr[i][0][k-1], INT_MAX);
         arr[i][0][k] = min_val + cube[i][0][k];
      }
   }
   for(k = 1; k < height; k++){
      for(j = 1; j < breadth; j++){
         int min_val = Minimum(arr[0][j][k-1], arr[0][j-1][k], INT_MAX);
         arr[0][j][k] = min_val + cube[0][j][k];
      }
   }
   for(i = 1; i < length; i++){
      for(j = 1; j < breadth; j++){
         for(k = 1; k < height; k++){
            int min_val = Minimum(arr[i-1][j][k], arr[i][j-1][k], arr[i][j][k-1]);
            arr[i][j][k] = min_val + cube[i][j][k];
         }
      }
   }
   return arr[length-1][breadth-1][height-1];
}
int main(){
   int cube[length][breadth][height] = { { {2, 4, 1}, {3, 4, 5}, {9, 8, 7}},
      { {5, 3, 2}, {7, 6, 5}, {8, 7, 6}},
      { {3, 2, 1}, {4, 3, 2}, {5, 4, 3}}};
   cout<<"Minimum Sum Path In 3-D Array are: "<<Minimum_SubPath(cube);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

Minimum Sum Path In 3-D Array are: 15

  1. C++ এ পাথ যোগফল III

  2. C++ সাম অ্যারে ধাঁধা

  3. C++ এ একটি সমষ্টি অ্যারে ধাঁধা?

  4. পাইথনে সর্বনিম্ন পথের যোগফল