সর্বোচ্চ বর্ধমান সাবসিকোয়েন্সের জন্য জাভা প্রোগ্রাম নিচে দেওয়া হলো:
উদাহরণ
public class Demo{ static int incre_subseq(int my_arr[], int arr_len){ int seq_arr[] = new int[arr_len]; int i, j, max = 0; for (i = 0; i < arr_len; i++) seq_arr[i] = 1; for (i = 1; i < arr_len; i++) for (j = 0; j < i; j++) if (my_arr[i] > my_arr[j] && seq_arr[i] < seq_arr[j] + 1) seq_arr[i] = seq_arr[j] + 1; for (i = 0; i < arr_len; i++) if (max < seq_arr[i]) max = seq_arr[i]; return max; } public static void main(String args[]){ int my_arr[] = { 10, 22, 9, 33, 21, 50, 41, 60 }; int arr_len = my_arr.length; System.out.println("The length of the longest increasing subsequence is " + incre_subseq(my_arr, arr_len)); } }আউটপুট
The length of the longest increasing subsequence is 5
Demo ক্লাসে 'incre_subseq' নামে একটি স্ট্যাটিক ফাংশন আছে যা অ্যারে এবং অ্যারের দৈর্ঘ্য প্যারামিটার হিসেবে নেয়। এই ফাংশনের ভিতরে একটি নতুন অ্যারে তৈরি করা হয়েছে যা খালি। 'max' ভেরিয়েবলকে ০ মান অ্যাসাইন করা হয়েছে। একটি 'for' লুপ অ্যারের দৈর্ঘ্যের ওভার ইটেরেট করে এবং প্রতিটি এলিমেন্টকে ১ হিসেবে ইনিশিয়ালাইজ করা হয়েছে।
আবার, 'for' লুপ ইটেরেট করা হয়েছে, এবং আরেকটি 'for' লুপ শুরু করা হয়েছে যা চেক করে অ্যারেতে প্রথম এলিমেন্ট দ্বিতীয় এলিমেন্টের সমান কিনা এবং যদি অ্যারে (seq_arr, যেটিতে সব ১ ইনিশিয়ালাইজ করা হয়েছিল) এর প্রথম এলিমেন্ট দ্বিতীয় এলিমেন্ট + ১ থেকে ছোট হয়। seq_arr-এ এলিমেন্টগুলোর সর্বোচ্চ মান বের করা হয়েছে এবং রিটার্ন করা হয়েছে। এটি ডাইনামিক প্রোগ্রামিং টেকনিক যেখানে একটি মান কম্পিউট করে একটি অ্যারেতে সংরক্ষণ করা হয়, রিকার্সনের মত বারবার কম্পিউট করার প্রয়োজন নেই। যখনই পূর্বে কম্পিউট করা কোনো এলিমেন্ট প্রয়োজন হয়, তা অ্যারেতে থেকে ফেচ করা হয়।