লংগেস্ট কমন সিক্যুয়েন্স-
-এর জন্য জাভা প্রোগ্রাম নিচে দেওয়া হলউদাহরণ
public class Demo{ int subseq(char[] a, char[] b, int a_len, int b_len){ int my_arr[][] = new int[a_len + 1][b_len + 1]; for (int i = 0; i <= a_len; i++){ for (int j = 0; j <= b_len; j++){ if (i == 0 || j == 0) my_arr[i][j] = 0; else if (a[i - 1] == b[j - 1]) my_arr[i][j] = my_arr[i - 1][j - 1] + 1; else my_arr[i][j] = max_val(my_arr[i - 1][j], my_arr[i][j - 1]); } } return my_arr[a_len][b_len]; } int max_val(int val_1, int val_2){ return (val_1 > val_2) ? val_1 : val_2; } public static void main(String[] args){ Demo my_inst = new Demo(); String my_str_1 = "MNSQR"; String my_str_2 = "PSQR"; char[] a = my_str_1.toCharArray(); char[] b = my_str_2.toCharArray(); int a_len = a.length; int b_len = b.length; System.out.println("The length of the longest common subsequence is"+ " " + my_inst.subseq(a, b, a_len, b_len)); } }
আউটপুট
The length of the longest common subsequence is 3
ডেমো নামের একটি ক্লাসে "subseq" নামক একটি ফাংশন রয়েছে যা প্রদত্ত স্ট্রিংগুলির জন্য সবচেয়ে দীর্ঘতম সাধারণ অনুবর্তন প্রদান করে যেমন str_1[0 থেকে len(str_1-1) , str_2(0 থেকে len(str_2-1) //2' লুপগুলির জন্য উভয় স্ট্রিং-এর দৈর্ঘ্যের উপর পুনরাবৃত্তি করা হয় এবং যদি 'i' এবং 'j' উভয়ই 0 হয়, তাহলে, অ্যারের নির্দিষ্ট সূচকগুলি 0-এ বরাদ্দ করা হয়। অন্যথায়, my_arr[প্রথম স্ট্রিংয়ের দৈর্ঘ্য +1][দ্বিতীয় স্ট্রিংয়ের দৈর্ঘ্য + 1] নির্মিত।
প্রধান ফাংশন ডেমো ক্লাসের একটি নতুন উদাহরণ সংজ্ঞায়িত করে এবং দুটি স্ট্রিং my_str_1 এবং my_str_2 সংজ্ঞায়িত করে। উভয় স্ট্রিং অ্যারেতে রূপান্তরিত হয় এবং তাদের দৈর্ঘ্য পৃথক ভেরিয়েবলে সংরক্ষণ করা হয়। ফাংশনটি এই মানগুলিতে বলা হয়৷
৷এটি একটি গতিশীল প্রোগ্রামিং কৌশল যেখানে একটি মান গণনা করা হয় এবং একটি অ্যারেতে সংরক্ষণ করা হয়, এটি পুনরাবৃত্তির মতো বারবার গণনা করার প্রয়োজনকে সরিয়ে দেয়। যখনই একটি পূর্বে গণনা করা উপাদান প্রয়োজন হয়, এটি অ্যারে থেকে আনা হয়৷
৷