Documente Academic
Documente Profesional
Documente Cultură
2. Lui Gigel îi plac nr. formate numai din cifre pare cifre aflate în ordine descrescătoare. Să se
determine şi să se afişeze pe ecran toate nr. de n cifre (0<n<10) care îi plac lui Gigel. Valoarea lui
n este un nr. natural care se citeşte de la tastatură.
Exemplu:
INPUT OUTPUT
200 220 222 400 402 422 440 442 444 600 620 622 640 644 660 662 664
n=3 666 800 820 822 840 842 844 860 862 864 866 880 882 884 886 888
bool solutie(int k)
{ solutie=(k=n);
}
void tipar;
{ int i;
for(i=1;i<=n;i++)
cout<<st[i]<<” ”;
}
int main()
{ cin>>n;
k=1;
init(k,st);
while(k>0)
{ do{ succesor(as,st,k);
if(as) valid(ev,st,k);
}until ((not as) or (as and ev));
if(as)
if(solutie(k)) tipar
else { k=k+1;
init(k,st);}
else k=k-1;
}
}
3. Concurs sportiv
La un concurs sportiv s-au înscris n concurenţi având numerele de concurs 1,2,...,n. Pentru
fiecare sportiv se cunoaşte tara de origine (şir de caractere). In prima zi vor intra in concurs m
concurenţi. Afişaţi toate posibilităţile de a stabili ordinea intrării in concurs a celor m concurenţi
respectând următoarele condiţii:
- 2 sportivi din aceeaşi tara nu pot evolua unul după altul
- trebuie respectata ordinea crescătoare a numerelor de concurs ale sportivilor.
bool solutie(int k)
{ solutie=(k=m);
}
void tipar;
{ int i;
for(i=1;i<=m;i++)
cout<<st[i]<<” ”;
}
int main()
{ cin>>n>>m;
for(i=1;i<=n;i++)
{ cout<<”concurentul ”<<i<<”=”;cin>>ţara[i];}
while(k>0)
{ do{ succesor (as,st,k);
if as then valid(ev,st,k);
}until (not as) or (as and ev);
if(as)
if(solutie(k)) tipar
else { k=k+1;
init(k,st)
}
else k=k-1;
}
}
4. Descompunere
Sa se afişeze toate modurile posibile de a descompune un număr natural n in suma de k numere
naturale diferite(n si k sunt cunoscute).
bool solutie(int k)
{ solutie=(k=p);
}
void tipar;
{ int i;
if(s==n)
for(i=1;i<=p;i++)
if (st[i]%2==1) cout<<st[i]<<” ”;
}
int main()
cin>>n>>p;
k=1;init(k,st);
while k>0 do
begin
repeat
succesor (as,st,k);
if as then valid(ev,st,k);
until (not as) or (as and ev);
if as then
if solutie(k) then tipar
else begin
k=k+1;
init(k,st)
end
else k=k-1;
end;
bool solutie(int k)
{ solutie=(k=n);
}
void tipar;
{ int i;
for(i=1;i<=k;i++)
if (st[i]%2==1) cout<<”(”;
else cout<<”)”;
}
int main()
{ cin>>n;
k=1;
init(k,st);
while(k>0)
{ do{ succesor(as,st,k);
if(as) valid(ev,st,k);
}until ((not as) or (as and ev));
if(as)
if(solutie(k)) tipar
else { k=k+1;
init(k,st); }
else k--;
}
}
6. Partitiile unui numar natural
Scrieti un program care sa determine toate partitiile unui nr natural n.
Exemplu:
INPUT OUTPUT
n=3 1+1+1=3
1+2=3
2+1=3
3=3
bool solutie(int k)
{ solutie=(k=n);
}
void tipar;
{ int i;
for(i=1;i<=k;i++)
cout<<st[i]<<” ”;
}
int main()
{ cin>>n;
k=1;
init(k,st);
while (k>0)
{ do{ succesor(as,st,k);
if as then valid(ev,st,k);
}until (not as) or (as and ev);
if(as)
if(solutie(k)) tipar
else { k=k+1;
init(k,st); }
else k=k-1;
}
}