কম্পিউটার টিউটোরিয়াল

C# ব্যবহার করে দেওয়া সংখ্যার থেকে ইউনিক সম পাওয়ার জন্য সংখ্যাগুলোর সংমিশ্রণ খুঁজে বের করার পদ্ধতি


বৈধ সিকোয়েন্স সংরক্ষণের জন্য একটি আউটপুট লিস্ট এবং রিকার্শন ট্রির পথে পাওয়া বর্তমান সিকোয়েন্স সংরক্ষণের জন্য একটি করেন্ট লিস্ট তৈরি করুন। একটি ব্যাকট্র্যাক ফাংশন যা টার্গেট অর্জন না হওয়া পর্যন্ত রিকার্শনে যাবে, অন্যথায় টার্গেট 0-এর চেয়ে ছোট হলে এটি ব্যাকট্র্যাক করবে। যেকোনো মুহূর্তে টার্গেট 0 হলে ক্যান্ডিডেট অ্যারেটি রেজাল্টে যোগ করুন কারণ ক্যান্ডিডেট অ্যারেতে থাকা মানগুলোর যোগফল দেওয়া টার্গেটের সমান হতে হবে।

যদি এগুলো না হয়, তবে একে একে ক্যান্ডিডেট অ্যারেতে এলিমেন্ট যোগ করে রিকার্শনলে আগে বাড়ুন।

মান लीজिए, সংখ্যাটি 5, তাহলে আমাদের 5 বানানো সংখ্যাগুলো খুঁজে বের করতে হবে। আউটপুট হবে "1,4", "2,3", 5। আউটপুট থেকে 014, 023 এবং 05 বাদ দেওয়া যাবে।

উদাহরণ

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace ConsoleApplication
{
    public class BackTracking
    {
        public void UniqueCombinationOfNumbersCorrespondsToSum(int n)
        {
            int[] array = new int[n + 1];
            for (int i = 1; i <= n; i++)
            {
                array[i] = i;
            }
            List<int> currentList = new List<int>();
            List<List<int>> output = new List<List<int>>();
            UniqueCombinationSum(array, n, 0, 0, currentList, output);
            foreach (var item in output)
            {
                StringBuilder s = new StringBuilder();
                foreach (var item1 in item)
                {
                    s.Append(item1.ToString());
                }
                Console.WriteLine(s);
                s = null;
            }
        }

        private void UniqueCombinationSum(int[] array, int target, int sum, int index, List<int> currentList, List<List<int>> output)
        {
            if (sum == target)
            {
                List<int> newList = new List<int>();
                newList.AddRange(currentList);
                output.Add(newList);
                return;
            }
            else if (sum > target)
            {
                return;
            }
            else
            {
                for (int i = index; i < array.Length; i++)
                {
                    currentList.Add(array[i]);
                    UniqueCombinationSum(array, target, sum + array[i], i + 1, currentList, output);
                    currentList.Remove(array[i]);
                }
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            BackTracking b = new BackTracking();
            b.UniqueCombinationOfNumbersCorrespondsToSum(5);
        }
    }
}

আউটপুট

14 23 05
  1. C#-এ অ্যারের র‍্যাঙ্ক (Rank) বের করা

  2. C#-এ রিকার্শন ব্যবহার করে সংখ্যার ডিজিট সাম বের করা

  3. পাইথনে দেওয়া সংখ্যার অঙ্ক গণনা করার প্রোগ্রাম

  4. সি++-এ ডিপেন্ডেন্সি থেকে টাস্কের অর্ডারিং বের করুন (টপোলজিক্যাল সোর্ট)