Wednesday, 16 July 2014

N ta elementdan M tadan kombinatsiyalarni chiqarish

N ta elementdan M tadan kombinatsiyalarni chiqarish

Xususiy holda:

2 ta elementdan uzunligi Mga teng bo'lgan barcha satrlarni hosil qilish:
barcha satrlar soni: 2^M ta bo'ladi, buni rekursiya usuli yordamida C# dasturlash tilining
Consule Applicationidan foydalanib hal qilamiz:

namespace TestCombination2M
{
    class Combination2M
    {
        private  string s = "XT"; //2ta belgini "XT" deb olamiz
        public Combination2M(int m)
        {
            this.m = m;
            resultList = new List<string>();
        }
        public int count = 0;
        private string p = string.Empty;
        public List<String> resultList { get; set; }
        public  void Generate(int k)
        {
            if (k != m)
            {
                for (int i = 0; i < s.Length; i++)
                {
                    x[k + 1] = s[i]; Generate(k+1);
                }

            }

            else
            {
                p = string.Empty;
                for (int i = 1; i <= m; i++) p=p+x[i];
                //Uzunligi m ga teng bo'gan satrlarni String tipidagi resultList ro'yxatiga qo'shib boramiz 
                resultList.Add(p);
                count++;
            }
        }
        private int m = 0;
        private char[] x = new char[100];//m<=100 deb olamiz
    }
    class Program
    {
        
        static void Main(string[] args)
        {

            Combination2M comb2M = new Combination2M(10);//M=10

            comb2M.Generate(0);//Rekursiyaning dastlabki qadamini 0 bilan boshlaymiz
            foreach (var item in comb2M.resultList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("----------------------");
            Console.WriteLine("Hosil qilingan satrlar soni:" + comb2M.count.ToString());
            Console.ReadLine();
        }
    }
}

Natija:
Dastur natijasi. XT elementlaridan uzunligi 10ga teng bo'lgan barcha "so'z" larni hosil qilish
Umumiy holda:

Ushbu dasturni umumiy holda ya'ni Nta elementdan uzunligi Mga teng bo'lgan barcha satrlarni hosil qilishda
ishlatish mumkin. Hosil qilingan barcha kombinatsiyalar soni N^M ga teng bo'ladi(Masalan N=3, M=2 uchun - 3^2=9 ta)
       N=3 uchun dasturdagi   private  string s = "XT";  satrdagi
s nig qiymatini 3ta turlicha belgi berish yetarli, masalan s="XTZ" va M=3 uchun dastur natijasi quyidagicha bo'ladi: