Orar semigroup #2

Orar semigroup #2

10/4

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>
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;}
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.
#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;
}


luni, 3 octombrie 2011 by DlMuresan
Categories: | Leave a comment

Leave a Reply