Aspecte teoretice:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PermutariCS { class Program { static bool ConditiiContinuare(int[] x, int k) { bool atac = false; int i = 1; while (!atac && i < k) if (x[i] == x[k]) atac = true; else i++; return !atac; } static void ScrieSolutia(int[] x, int n, int nsol) { Console.WriteLine("Solutia " + nsol + " este: "); for (int i = 1; i <= n; i++) { Console.Write(x[i]); } Console.ReadLine(); } static void Main(string[] args) { int n, k, nsol; bool buna; int[] x = new int[50]; Console.WriteLine("Problema permutarilor"); Console.Write("Dati numarul n "); n = Convert.ToInt32(Console.ReadLine()); k = 1; x[k] = 0; nsol = 0; while (k > 0) { buna = false; while (!buna && x[k] < n) { x[k]++; if (ConditiiContinuare(x, k)) buna = true; } if (buna) if (k == n) { nsol++; ScrieSolutia(x, n, nsol); } else { k++; x[k] = 0; } else k--; } } } }
Imports System.Math Module Module1 Dim x(51) As String Dim n, k, nsol As Integer Dim buna As Boolean Function ConditiiContinuare(ByVal k As Integer) Dim atac As Boolean atac = False Dim i As Integer i = 1 While (Not atac And i < k) If (x(i) = x(k)) Then atac = True Else i = i + 1 End If End While Return Not atac End Function Sub ScrieSolutie() nsol = nsol + 1 Console.WriteLine("Solutia " & nsol & " este: ") For i = 1 To n Console.Write(x(i)) Next i Console.ReadLine() End Sub Sub Main() Console.WriteLine("Problema Permutarilor") Console.Write("Dati numarul n: ") n = Convert.ToInt32(Console.ReadLine()) k = 1 x(k) = 0 nsol = 0 While (k > 0) buna = False While (Not buna And x(k) < n) x(k) = x(k) + 1 If (ConditiiContinuare(k)) Then buna = True End If End While If (buna) Then If (k = n) Then ScrieSolutie() Else k = k + 1 x(k) = 0 End If Else k = k - 1 End If End While End Sub End Module
#include "stdafx.h" #include <iostream> #include <conio.h> #include <cmath> using namespace std; int x[51]; int k, n, nsol; bool buna; bool ConditiiContinuare(int k) { bool atac=false; int i=1; while (!atac && i<k) if (x[i]==x[k]) atac=true; else i++; return !atac; } void ScrieSolutia() { nsol++; cout<<"Solutie "<<nsol<<" este:\n"; for (int i=1; i<=n; i++) cout<<x[i]; cout<<endl; getchar(); } int main() { cout<<"Problema generare permutari\n"; cout<<"Dati numarul n: "; cin>>n; k=1; x[k]=0; nsol=0; while (k>0) { buna=false; while (!buna && x[k]<n) { x[k]++; if (ConditiiContinuare(k)) buna=true; } if (buna) if (k==n) ScrieSolutia(); else { k++; x[k]=0; } else k--; } }
static void ScrieSolutia(int x[],int n,int nsol){ System.out.println(“Solutia ” + nsol + ” este: “); for (int i = 1; i <= n; i++) { System.out.println(x[i] + ” “); } } public static void main(String args[]) |
Rezultat: