Informatică, întrebare adresată de deliabigiu, 8 ani în urmă

Buna ziua ! Va rog sa ma ajutati cu o completare la acest program.

Cerinta : Se dau două numere n m. Să se genereze toate numerele cu exact n cifre mai mici decât m cu proprietatea că prima și ultima cifră sunt egale. c++
Exemplu
Intrare

3 3
Ieșire

101
111
121
202
212
222

#include

using namespace std;
int n , x[11],m;

int solutie(int k)
{
if(k==n)
return 1;
return 0;
}

int valid(int k)
{
if(k==1 && x[k]==0)

return 0;
return 1;


}
void tipar(int k)
{
for(int i=1;i<=k;i++)


cout< cout<

}
void back(int k)
{
for(int i=0;i {
x[k]=i;

if(valid(k))
if(solutie(k))
tipar(k);
else
back(k+1);
}

}

int main()
{
cin>>n>>m;

back(1);

return 0;
}
Intelg ca trebuie sa intreb undeva daca prima si ultima cifra sunt egale , dar dupa mai multe incercari nu am reusit. Cum as putea modifica acest program? Multumesc pentru intelegere !

Răspunsuri la întrebare

Răspuns de lifeoftheparty
4

Bună! Condiția ca prima și ultima cifră să fie egale se pune în subprogramul „valid”.

if (k==n && x[k]!=x[1]) return 0;

Acesta este programul complet:

#include <iostream>

using namespace std;

int n , x[11],m;

int solutie(int k)

{

if (k==n)

return 1;

return 0;

}

int valid(int k)

{

if(k==1 && x[k]==0)

return 0;

if (k==n && x[k]!=x[1]) return 0;

return 1;

}

void tipar(int k)

{

for(int i=1;i<=k;i++)

cout<<x[i];

cout<<'\n';

}

void back(int k)

{

for(int i=0;i<m;i++)

{x[k]=i;

if(valid(k))  if(solutie(k))

tipar(k);

else

back(k+1);

}

}

int main()

{

cin>>n>>m;

back(1);

return 0;

}



deliabigiu: Multumesc mult !
Alte întrebări interesante