আমাদের একটি কিউব দেওয়া আছে যেটি একটি ৩-D অ্যারে হিসেবে cube[length][breadth][height] ব্যবহার করে তৈরি করা যেতে পারে। কাজটি হল কিউব ট্র্যাভার্স করে ন্যূনতম যোগফল পাথ গণনা করা এবং ফলাফল প্রিন্ট করা।
বিভিন্ন ইনপুট-আউটপুট পরিস্থিতি দেখে নিই -
ইন - 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}}}
আউট - ৩-D অ্যারেতে ন্যূনতম যোগফল পাথ: 15
ব্যাখ্যা - আমাদের একটি কিউব দেওয়া আছে যাতে দৈর্ঘ্য, প্রস্থ এবং উচ্চতা রয়েছে। এখন আমরা ৩-D অ্যারেতে ন্যূনতম যোগফল পাথ গণনা করব। সেটি 2 + 4 + 1 + 3 + 5 = 15 থেকে শুরু হবে।
ইন - int cube[length][breadth][height] = { { {1, 2}, {7, 8}}, { {3, 5}, {9, 16}}}
আউট - ৩-D অ্যারেতে ন্যূনতম যোগফল পাথ: 24
ব্যাখ্যা - আমাদের একটি কিউব দেওয়া আছে যাতে দৈর্ঘ্য, প্রস্থ এবং উচ্চতা রয়েছে। এখন আমরা ৩-D অ্যারেতে ন্যূনতম যোগফল পাথ গণনা করব। সেটি 1 + 2 + 5 + 16 = 24 থেকে শুরু হবে।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি
- পূর্ণসংখ্যা টাইপের মান 지닌 একটি ৩-D অ্যারে ইনপুট নিন কিউব তৈরি করতে। ডেটা Minimum_SubPath(cube) ফাংশনে পাস করুন।
- Minimum_SubPath(cube) ফাংশনের ভিতরে:
- কিউবের আকারের সমান একটি অ্যারে তৈরি করুন এবং arr[0][0][0]-কে cube[0][0][0]-এ ইনিশিয়ালাইজ করুন।
- i = ১ থেকে কিউবের দৈর্ঘ্য পর্যন্ত একটি FOR লুপ শুরু করুন এবং arr[i][0][0] = arr[i-1][0][0] + cube[i][0][0] সেট করুন।
- j = ১ থেকে কিউবের প্রস্থ পর্যন্ত একটি FOR লুপ শুরু করুন এবং arr[0][j][0] = arr[0][j-1][0] + cube[0][j][0] সেট করুন।
- k = ১ থেকে কিউবের উচ্চতা পর্যন্ত একটি FOR লুপ শুরু করুন এবং arr[0][0][k] = arr[0][0][k-1] + cube[0][0][k] সেট করুন।
- i = ১ থেকে দৈর্ঘ্য পর্যন্ত এবং j = ১ থেকে প্রস্থ পর্যন্ত একটি নেস্টেড FOR লুপ শুরু করুন এবং 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] সেট করুন।
- i = ১ থেকে দৈর্ঘ্য পর্যন্ত এবং k = ১ থেকে উচ্চতা পর্যন্ত একটি নেস্টেড FOR লুপ শুরু করুন এবং 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] সেট করুন।
- k = ১ থেকে উচ্চতা পর্যন্ত এবং j = ১ থেকে প্রস্থ পর্যন্ত একটি নেস্টেড FOR লুপ শুরু করুন এবং 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] সেট করুন।
- i = ১ থেকে দৈর্ঘ্য, j = ১ থেকে প্রস্থ, k = ১ থেকে উচ্চতা পর্যন্ত তিনটি নেস্টেড FOR লুপ শুরু করুন এবং 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] সেট করুন।
- arr[length-1][breadth-1][height-1] রিটার্ন করুন।
- Minimum(int a, int b, int c) ফাংশনের ভিতরে:
- চেক করুন IF a < b এবং a < c তবে a রিটার্ন করুন।
- অন্যথায়, c রিটার্ন করুন।
- ELSE 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