Informatică, întrebare adresată de BalenaRosie, 9 ani în urmă

Avem o multime de litere si simboluri de la tastatura : `~1!2@3#4$5%6^7&8*9(0)-_=+qQwWeErRtTyYuUiIoOpP[{]}\|aAsSdDfFgGhHjJkKlL;:'"zZxXcCvVbBnNmM,<.>/?
Sa se faca un program asa incat acesta sa afiseze totalitatea combinatilor posibile care se pot face cu acestea
AM NEVOIE URGENT
PS : trebuie folosita biblioteca <fstream>


JolieJulie: In ce fel combinari...?
BalenaRosie: gen , le ei mai intai una cate una , dupa doua cate doua
BalenaRosie: daca ne gandim mai exact , e ca un fel de problema matematica
BalenaRosie: am uitat sa specific , biblioteca <fstream>
JolieJulie: Deci ceva de genul combinari de n luate câte k?dar sunt cam greu de afișat...Interesant ...
BalenaRosie: da
BalenaRosie: =))) pai de astas incerc sa vad daca poate sa ma ajute cineva
Utilizator anonim: asta e backtracking toata ziua

Răspunsuri la întrebare

Răspuns de uleiaalex
3
Dupa mult studiu am reusit cumva sa se poata genera toate posibilitatile.

Sper ca m-am supus cerintei, deoarece e cam vaga si asa am studiat pentru ce am gandit.

Nu mi se pare asa eficienta metoda, dar este ok. Scuze dar am facut-o in c#, o poti rescrie tu in C++ daca e nevoie, dar o sa dureze ceva generarea rezultatelor.

metoda e recursiva

pentru ceva simplu de gandit folositi for-uri pana va saturati. O seara placuta si sarbatori fericite in continuare. :D

Update1: Am mai diversificat programul in C#.

Spor la BruteForce password :)

using System;
namespace BackTracking
{
    class Program
    {
        static string sir = "";
        static int statusSolve = 0;  // 0 = combinari; 1= aranjamente//
        static void combinationUtil(int[] arr, int[] data, int start, int end,                                                                                  int index, int r)
        {
            // Current combination is ready to be printed, print it
            if (index == r)
            {
                for (int j = 0; j < r; j++)
                    Console.Write(sir[data[j]] + " ");
                Console.WriteLine();
                return;
            }
            ////pui i = start => combinari     -----------   i <= end && end - i + 1 >= r - index
            ////pui i = 0 => aranjamente      -----------   i <= end

            if (statusSolve == 0)    //Combinari
            {
                 for (int i = start; i <= end && end - i + 1 >= r - index; i++)
                 {
                     data[index] = arr[i];
                     combinationUtil(arr, data, i + 1, end, index + 1, r);
                 }
             }
            else if (statusSolve == 1)    //Aranjamente
            {
                 for (int i = 0; i <= end; i++)
                 {
                     data[index] = arr[i];
                     combinationUtil(arr, data, i + 1, end, index + 1, r);
                 }
             }
        }
        static void PrintCombination(int[] arr,int n, int r)
        {
            int[] data = new int[r];
            combinationUtil(arr,data,0,n-1,0,r);
        }        
        static void Main(string[] args)
        {
            //citire sir
            Console.WriteLine("Introdu sirul:");
            sir = Console.ReadLine();
            //atribuire valor indexi sir caractere
            int[] arr = new int[sir.Length];

            for (int i = 0; i < sir.Length; i++)
            {
                arr[i] = i;
            }
            Console.WriteLine("Pentru combinari - introdu 1");                                                        Console.WriteLine("Pentru aranjamanete - introdu 2");
            int temp = int.Parse(Console.ReadLine());
            switch (temp)
            {
                case 1:
                    statusSolve = 0;
                    break;
                case 2:
                    statusSolve = 1;
                    break;
                default:
                    break;
            }
            //Combinari/Aranjamente de n
            int n = arr.Length;
            //Luate cate r
            if (statusSolve == 0)
                Console.WriteLine("Combinari de {0} luate cate (trebuie sa fie mai mica ca {0})", n);
            else
                Console.WriteLine("Aranjamente de {0} luate cate (trebuie sa fie mai mica ca {0})", n);
            int r = int.Parse(Console.ReadLine());
            if (r >= 0 && r <=n)
                Print(arr, n, r);
            else
                Console.WriteLine("Nu poate fi r > n");
        }
    }
}


BalenaRosie: Severity Code Description Project File Line Suppression State
Error CS0103 The name 'Print' does not exist in the current context ConsoleApp1 C:\Users\balin\source\repos\ConsoleApp1\ConsoleApp1\Program.cs 77 Active
uleiaalex: Am gasit eroarea si nu o pot modifica fk it! Vezi la procedura PrintCombination, redenumeste-o doar Print
BalenaRosie: ok , mersiii
uleiaalex: Cu placere
BalenaRosie: daca mai am o nelamurire , cv , pot sa te contactez pe ceva ?
uleiaalex: Da, pe privat.
BalenaRosie: ai Steam , Skype sau Discord ? =))))
uleiaalex: Si Steam si Skype si Discord, dar vorbim pe privat pe brainly daca doresti detalii de contact.
BalenaRosie: oky oky , mersi
uleiaalex: Cu placere :D
Alte întrebări interesante