1. Sa se genereze toate coadele de 5 cifre cu urmatoarele restrictii: cifrele iau valori de la 1 la 9, numar impar pe ultima pozitie, suma a doua cifre alaturate sa fie minim 4, cifrele sa fie distinct
#include<iostream>2. Sa se genereze toate nr de telefon care incep cu 074 sau 075 (10 cifre), nu contin 3 cifre identice alaturate si contin cel putin doua cifre impare pe ultimele 7 pozitii.
using namespace std;
int x[6],nr=0;
void afisare()
{int i;
for(i=1;i<6;i++)
cout<<x[i]<<" ";
cout<<endl;
nr++;
}
int verif(int i)
{int j,k,v[100]={0};
if(i==5 && x[i]%2==0)
return 0;
if(i>1 && x[i]+x[i-1]<4)
return 0;
if(i==5)
for(j=1;j<6;j++)
v[x[j]]++;
for(j=0;j<10;j++)
if(v[j]>1)
return 0;
return 1;
}
void back(int i)
{int j;
for(j=1;j<10;j++)
{x[i]=j;
if(verif(i))
if(i==5)
afisare();
else back(i+1);
}}
int main()
{back(1);
cout<<endl<<nr;}
#include<iostream>
using namespace std;
int x[11],nr=0;
void afisare()
{int i;nr++;
for(i=1;i<11;i++)
cout<<x[i]<<" ";
cout<<endl;
}
int verif(int i)
{int j,s=0;
for(j=1;j<i;j++)
if(x[i]==x[j])
return 0;
if(i>4 && x[i]==x[i-1] && x[i-1]==x[i-2])
return 0;
if(i==10)
{for(j=4;j<11;j++)
if(x[j]%2==1)
s++;
if(s<2)
return 0;
}
return 1;
}
void back(int i)
{int j;
for(j=0;j<10;j++)
{x[i]=j;
if(verif(i))
if(i==10)
afisare();
else back(i+1);}
}
int main()
{x[1]=0;x[2]=7;x[3]=4;
back(4);
cout<<endl<<endl<<"+++++++++++++++++++"<<endl<<endl<<nr<<endl<<endl;
nr=0;
x[3]=5;back(4);
cout<<endl<<endl<<nr;
}