আমাদের 'আকারে' সংরক্ষিত দৈর্ঘ্যের ক্যান্ডির একটি অ্যারে দেওয়া হয়েছে। প্রতিটি উপাদান ক্যান্ডি[i] টাইপের ক্যান্ডির জন্য একটি সংখ্যা থাকে i. লক্ষ্য হল যে কোনও পরিমাণ অর্থের জন্য যতটা সম্ভব ক্যান্ডি কেনা। শর্তগুলো দেওয়া হল -
আপনি যদি X[i] টাইপ i (0<=X[i] <=candies[i] ) ক্রয় করেন, তাহলে সমস্ত j ( 1<=j<=i ) এর জন্য অন্তত নিম্নলিখিত শর্তগুলির মধ্যে অবশ্যই সত্য হতে হবে −
-
X(j)
-
X(j)=0, j ধরনের কোন ক্যান্ডি কেনা হয়নি
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − Arr[] ={ 1,3,5,2,6,7 }.
আউটপুট − সর্বাধিক ক্যান্ডি যা কেনা যায় − 16
ব্যাখ্যা − ক্যান্ডি টাইপ i { 0,3,5,2,6,0 }
কেনাইনপুট − Arr[] ={ 5,7,7,3,4 }।
আউটপুট − সর্বাধিক ক্যান্ডি যা কেনা যায় − 10
ব্যাখ্যা − ক্যান্ডি টাইপ i { 0,0,7,3,0 }
কেনানিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
পূর্ণসংখ্যা অ্যারে ক্যান্ডি[] i.
ধরনের ক্যান্ডির সংখ্যা সংরক্ষণ করতে ব্যবহৃত হয় -
পরিবর্তনশীল 'আকার' অ্যারে ক্যান্ডির দৈর্ঘ্য সঞ্চয় করে।
-
ফাংশন maxCandies(int arr[], int n) কেনা যায় এমন মোট ক্যান্ডির সংখ্যা ফেরত দিতে ব্যবহৃত হয়।
-
প্রথমে ধরুন আমরা শেষ ধরনের ক্যান্ডি কিনেছি। bought=arr[n-1]
-
দ্বিতীয় শেষ উপাদান থেকে শুরু করে, for(i=n-2;i>=0;i-)
-
ভেরিয়েবল x বর্তমান ধরনের ক্যান্ডির পরিমাণ সঞ্চয় করে যা কেনা যায়। x=arr[i] বা কেনা-1 যেটি কম।
-
যদি x অ-জিও হয় তবে এটিকে মোট যোগ করুন।
-
যদি মোটটি আগের কেনা মানের থেকে বেশি হয় তাহলে bought=x.
-
কেনা ফলাফল ফেরত দিন।
উদাহরণ
#include <stdio.h> int maxCandies(int arr[], int n){ int bought = arr[n - 1]; int total = bought; // Starting from second last for (int i = n - 2; i >= 0; i--) { // Amount of candies of the current // type that can be bought int x = arr[i]<bought-1?arr[i]:bought-1; if (x >= 0) { total += x; bought = x; } } return total; } int main(){ int candies[] = { 1,2,4,3,7 }; int size = 5; printf("Total Candies that can be bought: %d", maxCandies(candies, size)); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেTotal Candies that can be bought: 13