Pagini recente » Cod sursa (job #1212289) | Cod sursa (job #2142028) | Cod sursa (job #1462650) | Cod sursa (job #2977532) | Cod sursa (job #1143214)
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("copii.in");
ofstream g("copii.out");
int n, maxim[11], a[11], st[11], nrpart, cop[11][11];
char c;
int verifica()
{
int pr[11];
for (int j=1; j<=maxim[n]; j++) {
memset(pr, 0, sizeof(pr));
pr[j]=1;
for (int l=1; l<=n; l++)
if (a[l]==j)
for (int m=1; m<=n; m++)
if(cop[l][m]==1)
pr[a[m]]=1;
for (int l=1; l<=maxim[n]; l++)
if (pr[l]==0 || maxim[n]==1)
return 0;
}
return 1;
}
void back(int k)
{
if (k==n+1) {
if(verifica())
nrpart++;
}
else {
for (int i=1; i<=maxim[k-1]+1; i++) {
a[k]=i;
maxim[k]=max(maxim[k-1], i);
back(k+1);
}
}
}
int main()
{
f>>n;
f.get();
for (int i=1; i<=n; i++) {
for (int j=1; j<=n; j++) {
f>>c;
cop[i][j]=c-'0';
}
}
back(1);
g<<nrpart;
return 0;
}