22. Drapele tricolore. Avem la dispoziţie pânză de 6 culori. Scrieţi un program care va determina toate variantele de drapele tricolore ce se pot proiecta, dacă:
• un drapel are la mijloc galben sau verde;
• cele trei culori sunt distincte.
• Harta. Fiind dată o hartă cu n țări, se cere o soluţie de colorare a hărţii, utilizând cel mult patru culori, astfel încât două ţări ce au frontiera comună să fie colorate diferit. Este demonstrat faptul că sunt suficiente numai patru culori pentru ca orice hartă să poată fi colorată. In C++
Dau coroana si puncte
Răspunsuri la întrebare
Răspuns:
Doar cu Harta nu am facut, restul lucreaza bine :)
Explicație:
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
char culori[100][20];
int n,p[100];
void citire()
{
fin>>n;
fin.get();
for(int i=1;i<=n;i++) fin.getline(culori[i],20);
}
void afis(int x[], int n)
{
for(int i=1;i<=n;i++) fout<<culori[x[i]]<<" ";
fout<<endl;
}
int bun(int x[], int k)
{
if (k>=2)
return strcmp(culori[x[2]],"galben")==0 || strcmp(culori[x[2]],"verde")==0;
else return 1;
}
void back(int x[], int n, int k)
{
int i;
for(i=1;i<=n;i++)
if(!p[i])
{
x[k]=i; p[i]=1;
if(bun(x,k)) if (k==3) afis(x,k);
else back(x,n,k+1);
p[i]=0;
}
}
int main()
{
int x[100];
citire();
back(x,n,1);
fin.close();
fout.close();
return 0;
}