#include <iostream>
#include <fstream>
using namespace std;
int n, x[100], a[100][100], pozitie[100], pus[100], nr;
ofstream f("persoane.txt");
void afisare()
{
for (int i = 1; i <= n; i++) f << x[i]<<" ";
f << endl;
}
int valid(int k)
{
for (int i = 1; i <= n; i++)
{
if (a[x[k - 1]][x[k]] == 1) return 0;
for (k = 1; k <= n - 3; k++)
for (int j = k + 3; j <= n; j++)
if (a[x[k]][x[k + j]] == 1 || a[x[k + j]][x[k]]==1) return 0; //0
daca se afla mai mult 2 persoane intre cei certati
return 1;
}
}
void back(int k)
{ for (int i = 1; i <= n; i++)
if (!pus[pozitie[i]])
{
x[k] = pozitie[i]; pus[pozitie[i]] = 1; //RETIN CA AM ASEZAT
PERSOANA
if (valid(k))
if (k == n)
{
afisare(); nr++;
}
else back(k + 1); …
[20:02, 23.04.2020] Huba Buba: Problema 1
[20:02, 23.04.2020] Huba Buba: #include <iostream>
#include <fstream>
using namespace std;
int i, n, nr, s, x[100];
ofstream f("calcul.txt");
void afisare()
{
s = 0;
for (int j = 1; j <= n; j++)
if (x[j] == 1) s = s + j;
else s = s - j;
f << endl;
}
int valid(int k)
{
return 1;
}
void back(int k)
{
}
}
int main()
{
cout << "INTRODUCETI NUMARUL DE ELEMENTE AL SIRULUI: "; cin >> n;
nr = 0;
for (i = 1; i <= n; i++) cout << i << " ";
back(1);
f << "NUMARUL SOLUTIILOR GENERATE: "<< nr;
f.close();
return 0;
}
2. Fie sirul primelor n numare naturale (n citit de la tastatura). Se inserează inainte de fiecare
valoare semnul + sau -. Pentru fiecare solutie astfel generată afisează valoarea expresiei. Ex
pt n =3: +1+2+3=6 +1+2-3=0 +1-2+3=2 etc. Scrieți un program C++ care să afişeze toate
soluțiile posibile. Rezultatele se scriu în fișierul calcul.txt, căte una pe linie.Acesta va contine
pe ultimul rand numărul soluțiilor generate.
#include <iostream>
#include <fstream>
using namespace std;
int i, n, nr, s, x[100];
ofstream f("calcul.txt");
void afisare()
{
s = 0;
for (int j = 1; j <= n; j++)
if (x[j] == 1) s = s + j;
else s = s - j;
f << endl;
}
int valid(int k)
{
return 1;
}
void back(int k)
{
}
}
int main()
{
cout << "INTRODUCETI NUMARUL DE ELEMENTE AL SIRULUI: "; cin >> n;
nr = 0;
for (i = 1; i <= n; i++) cout << i << " ";
back(1);
f << "NUMARUL SOLUTIILOR GENERATE: "<< nr;
f.close();
return 0;
}
3. Se citeste un numar natural de maxim 9 cifre. Scrieți un program C++ care să genereze
toate numerele având aceleași cifre ca el. Rezultatele se scriu în fișierul numere.txt, căte unul
pe linie.Acesta va contine pe ultimul rand numărul soluțiilor generate precum și cel mai mare
număr generat.
#include <iostream>
#include <fstream>
using namespace std;
int max=0, x[100], cifra[100], n, nr, i;
ofstream f("numere.txt");
void afisare()
{
int nr1 = 0;
for (int i = 1; i <= n; i++) nr1 = nr1 * 10 + x[i]; f << nr1; if (m<nr1) max = nr1;
f << endl;
}
int valid(int k)
{ for(int j=1; j<=k-1; j++)
if (x[k] == x[j]) return 0;
if (x[1] == 0) return 0;
return 1;
}
void back(int k)
{
for (int i = 1; i <= n; i++)
{
x[k] = cifra[i];
if(valid(k))
if (k == n)
{
afisare(); nr++;
}
else back(k + 1);
}
int main()
{
cout << "INTRODUCETI NUMARUL CIFRELOR (n<10): "; cin >> n;
cout << endl;
cout << "INTRODUCETI CIFRELE NUMARULUI: " << endl;
nr = 0;
for (i = 1; i <= n; i++) { cout << "cifra[" << i << "]=" << " "; cin >> cifra[i]; }
cout << "NUMARUL INTRODUS ESTE: ";
for ( i = 1; i <= n; i++) cout << cifra[i] << " ";
back(1);