Orar semigroup #2

Orar semigroup #2

10/10

1. Să se genereze toate codurile de lungime n morse formate din '.' şi '-' astfel încât să nu existe două puncte alăturate.

#include<iostream>
using namespace std;
char x[100];
int n,nr=0;
int verif(int i)
{if(i>1 && x[i]=='.' && x[i-1]=='.')
    return 0;
else return 1;
}

void back(int i)
{char j;
for(j='-';j<='.';j=j+'.'-'-')
    {x[i]=j;
if(verif(i))
    if(i==n)
    {    cout<<x+1<<endl;nr++;}
    else back(i+1);
    }
}

int main()
{cin>>n;
x[n+1]=NULL;
back(1);
cout<<endl<<nr<<" solutii";
}
2. Sa se aranjeze 8 regine pe tabla de şah astfel încât acestea să nu se atace. Două regine se atacă dacă sunt situate pe aceeaşi coloană, rând sau diagonală.
#include<iostream>
using namespace std;
int r[10],nr=0;

void afisare()
{int i,j;
nr++;
for(i=1;i<9;i++)
{for(j=1;j<9;j++)
    if(r[i]==j)
        cout<<'.';
    else cout<<'X';
    cout<<endl;}
cout<<endl;}

int verif(int i)
{int j;
for(j=1;j<i;j++)
    if(r[i]==r[j])
        return 0;
for(j=1;j<i;j++)
    if(abs(r[i]-r[j])==abs(i-j))
        return 0;
return 1;
}

void back(int i)
{int j;
for(j=1;j<9;j++)
    {r[i]=j;
    if(verif(i))
        if(i==8)
            afisare();
        else back(i+1);
    }
}

int main()
{
back(1);
cout<<endl<<nr<<" solutii";
}

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

Leave a Reply