Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

सी # का उपयोग करके के योग से मेल खाने वाले अद्वितीय संयोजन के योग को कैसे खोजें?

मान्य अनुक्रमों को संग्रहीत करने के लिए एक आउटपुट सूची बनाएं, एक वर्तमान सूची बनाएं जो रिकर्सन ट्री के पथ में पाए गए वर्तमान अनुक्रम को संग्रहीत करेगी। एक बैकट्रैक फ़ंक्शन जो लक्ष्य प्राप्त होने तक रिकर्सन में जाएगा, अन्यथा, इसे पिछले चरण में वापस जाना चाहिए क्योंकि लक्ष्य 0 से कम हो जाता है। किसी भी समय, यदि लक्ष्य 0 हो जाता है तो परिणाम में उम्मीदवार सरणी जोड़ें उम्मीदवार सरणी में मान दिए गए लक्ष्य के बराबर होना चाहिए।

यदि वे मामले नहीं हैं, तो एक-एक करके तत्वों को उम्मीदवार सरणी में जोड़ें और पुनरावर्ती रूप से आगे बढ़ें।

मान लीजिए, संख्या 5 है और k 2 है, इसलिए हमें आकार 2 में संख्याओं का संयोजन बनाने की आवश्यकता है जो कि 5 बनाता है। आउटपुट "1,4", "2,3" होगा।

उदाहरण

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace ConsoleApplication{
   public class BackTracking{
      public void UniqueCombinationSumOfExactKNumbers(int n, int k){
         int[] array = new int[n];
         for (int i = 1; i < n; i++){
            array[i] = i;
         }
         List<int> currentList = new List<int>();
         List<List<int>> output = new List<List<int>>();
         UniqueCombinationSumOfExactKNumbers(array, n, k, 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 UniqueCombinationSumOfExactKNumbers(int[] array, int target, int countOfNumbers, int sum, int index, List<int> currentList, List<List<int>> output){
         if (sum == target){
            if (currentList.Count == countOfNumbers){
               List<int> newList = new List<int>();
               newList.AddRange(currentList);
               output.Add(newList);
               return;
            }
         }
         else if (sum > target){
            return;
         }
         else if (currentList.Count == countOfNumbers && sum != target){
            return;
         }
         else{
            for (int i = index; i < array.Length; i++){
               currentList.Add(array[i]);
               UniqueCombinationSumOfExactKNumbers(array, target, countOfNumbers, sum + array[i], i + 1, currentList, output);
               currentList.Remove(array[i]);
            }
         }
      }
   }
   class Program{
      static void Main(string[] args){
         BackTracking b = new BackTracking();
         b.UniqueCombinationSumOfExactKNumbers(5, 2);
      }
   }
}

आउटपुट

14
23

  1. किसी संपत्ति का उपयोग करके जंजीर सरणी की लंबाई कैसे प्राप्त करें?

    सबसे पहले, एक दांतेदार सरणी घोषित करें और आरंभ करें। int[][] arr = new int[][] { new int[] {    0,    0 }, new int[] {    1,    2 }, new int[] {    2,    4 }, new int[] {    3,    6 }, new int[] {    4,  

  1. Numpy का उपयोग करके किसी दिए गए मैट्रिक्स के सभी तत्वों का योग कैसे प्राप्त करें?

    इस कार्यक्रम में, हम numpy लाइब्रेरी में योग () फ़ंक्शन का उपयोग करके एक numpy मैट्रिक्स की सभी शर्तों को जोड़ देंगे। हम पहले एक यादृच्छिक संख्यात्मक मैट्रिक्स बनाएंगे और फिर, हम सभी तत्वों का योग प्राप्त करेंगे। एल्गोरिदम Step 1: Import numpy. Step 2: Create a random m×n matrix using the rand

  1. पायथन का उपयोग करके प्राकृतिक संख्याओं का योग कैसे ज्ञात करें?

    आप लूप के दौरान एक चर i के मान को क्रमिक रूप से बढ़ाने के लिए उपयोग कर सकते हैं और इसे संचयी रूप से जोड़ सकते हैं। s,i=0,0 n=10 while i<n:    i=i+1    s=s+i print ("sum of first 10 natural numbers",s) फॉर लूप का उपयोग प्राकृतिक संख्याओं की एक श्रृंखला पर लूप करने