Ofer 100 puncte!Cine imi poate explica codul urmatoarei probleme, va rog mult.
Pe scurt problema foloseste metoda backtracking pentru un numar format din n elemente impare cu proprietatea ca oricare două cifre alăturate dintr-un număr generat sunt consecutive în mulțimea cifrelor impare.
De compilat imi compileaza corect dar am nevoie de explicatia codului prin metoda folosita.
#include
int x[10],n;
void scriesol()
{ int j;
std::cout<
for(j=1;j<=n;j++) std::cout<
}
int cond(int k)
{ if(k>1) if(x[k]-x[k-1]==2 || x[k-1]-x[k]==2) return 1;
else return 0;
else return 1;
}
void back(int k)
{
int i;
for(i=1;i<=9;i=i+2)
{
x[k]=i;
if (cond(k))
if (k==n) scriesol();
else back(k+1);
}
}
int main()
{
std::cin>>n;
back(1);
return 0;
}
Răspunsuri la întrebare
Răspuns:
Formatarea citirii și afișării se face prin intermediul unor funcții speciale, numite manipulatori. O parte dintre ele se află în fișierele header fstream și iostream (probabil deja incluse), altele se află în fișierul header iomanip – care trebuie și el inclus.
Afișarea poate fi formatată precizându-se:
lungimea – setw(int n): numărul n de caractere care vor fi utilizate pentru afișarea valorii dorite – implicit este variabil și egal cu numărul de caractere necesar. Modificând lungimea putem afișa date în format tabelar, distingându-se clar liniile și coloanele;
alinierea – left, right, internal: în cazul în care valoarea afișată ocupă mai puține caractere decât lungimea, ea poate fi aliniată la dreapta (implicit) sau la stânga (pentru orice fel de date) sau internal, pentru date numerice (întregi sau reale);
caracterul de umplere – setfill(char f): dacă valoarea afișată ocupă mai puține caractere decât lungimea, pe pozițiile nefolosite se vor scrie caractere de umplere – implicit spații;
precizia – setprecision(int n): numărul n de cifre folosite pentru afișarea valorilor reale; în funcție de context, poate reprezenta numărul total de cifre sau numărul de cifre de după punctul zecimal
baza de numerație (dec, oct, hex) în care sunt scrise valorile de tip întreg. Valorile întregi se pot scrie în baza 10 (implicit), baza 8 sau baza 16;
formatul de afișare (fixed, scientific sau implicit) valorilor reale.
Citirea poate fi formatată precizându-se:
baza de numerație (dec, oct, hex) în care se consideră valoarea întreagă introdusă. Se pot citi valori în bazele 10, 8 sau 16.
modul de tratare a caracterelor albe – skipws, noskipws: implicit, la citire se sare peste eventualele caracterele albe aflate înainte de valoarea de citit (skipws). Dacă este setat modul noskipws și înainte de valoarea de citit există caractere albe, citirea va eșua.
Manipulatorii se folosesc ca operanzi în operația de inserare în stream (cout << ) sau extragere din stream (cin >>). Unii dintre ei au efect în mod direct, alții au efect numai în combinație cu alți manipulatori. Unii manipulatori au efect doar asupra următoarei date afișate, alții au efect pentru toate datele care sunt afișate în continuare.
Formatare afișării
Lungimea
Lungimea unei date afișate se referă la numărul de caractere folosite pentru afișarea acelei date. Implicit se folosesc atâtea caractere cât este necesar. De exemplu, pentru a afișa numărul 2019 se folosesc 4 caractere. Acest comportament poate fi modificat cu ajutorul manipulatorului setw(n), unde n reprezintă numărul de caractere folosite pentru afișare:
cout << "|" << 2019 << "|" << endl;
cout << "|" << setw(10) << 2019 << "|" << endl;
Explicație: