Probleme de informatică
  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

   Home » Backtracking Bacalaureat 2016   |   Variante bacalaureat 2009   |   Atestat  |   Olimpiada       
Noutăţi
Subiecte admitere la Facultatea de informatica UBB Cluj-Napoca
Subiecte bacalaureat 2010-2017
Bacalaureat 2017 - competenţe digitale
C# - Windows Form Application - exemple
Modele de proiecte de atestat
Bacalaureat 2017
Subiecte si rezolvări 2010-2017
Rezolvari variante bacalaureat 2009
Competenţe digitale
Examen atestat
Rezumat documentatie
Teme proiect
php.doc
css.doc
exemple_php_si_css.rar
Modele de proiecte de atestat
Subiecte atestat 2014 CNLR
Olimpiada
Clasele V-VI
Clasele VII-VIII
Clasa a IX-a
Clasa a X-a
Clasele XI-XII
Noţiuni teoretice
Metode de sortare
Metoda backtracking


Din fisierul cub.in se citesc de pe prima linie 2 numere naturale n si m si de pe urmatoarele n linii n perechi l si c unde l este lungimea laturii, iar c culoarea pentru n cuburi. l este numar natural, iar c este sir de caractere de lungime maxim 20. Sa se construiasca toate turnurile formate din cel putin m cuburi care se pot forma din cuburile citite din fisier stiind ca un cub se poate pune peste un altul doar daca are latura strict mai mica si culoarea diferita de a celui peste care vrem sa īl punem. Sa se afiseze turnurile obtinute si turnul format din cele mai multe cuburi. Un turn se afiseaza īncepānd cu cel mai de sus cub.
Exemplu:
3 2
3 verde
4 rosu
1 rosu
Se obtin turnurile:
1 rosu
3 verde

3 verde
4 rosu
si
1 rosu
3 verde
4 rosu


#include<fstream.h>
#include<string.h>

struct cub{
	    int l;
	    char c[20];
	  };
cub c[100];

int x[100],mx[100],max=0,n,m;
ifstream f("cub.in");

void citire()
{ int i;
  f>>n>>m;
  for(i=1;i<=n;i++) f>>c[i].l>>c[i].c;
}

void scriesol(int k)
{ int j;
  if(k>max) { max=k;
       for(j=1;j<=max;j++) mx[j]=x[j];
       }
  for(j=k;j>=1;j--)
    cout<<c[x[j]].l<<" "<<c[x[j]].c<<endl;
  cout<<endl;
}

int cond(int k)
{
  if(k>1)
     if(c[x[k-1]].l>c[x[k]].l)
	if(strcmp(c[x[k-1]].c,c[x[k]].c)!=0) return 1;
	else return 0;
     else return 0;
  else return 1;
}

void back(int k)
{
  int i;
  for(i=1;i<=n;i++)
   {
       x[k]=i;
       if (cond(k))
	    { if (k>=m) scriesol(k);
	      back(k+1);
	    }
   }
}

void main()
{
 citire();
 back(1);
 cout<<"Cel mai inalt turn:";
 for(int j=max;j>=1;j--)
    cout<<c[mx[j]].l<<" "<<c[mx[j]].c<<endl;
}


  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

Calculatoare si accesorii second hand
Copyright © 2009-2017 Muresan Vasile Ciprian - mcip.ro