怎么没有反映啊
#include <iostream.h>
#include <stdio.h>
int narray[7][8]={{1,0,0,0,0,0,0,0},
{ 1,0,0,1,0,0,0,0},
{ 1,0,0,0,1,1,0,0},
{ 0,1,0,1,0,0,0,0},
{ 0,0,0,0,1,0,1,0},
{ 0,1,1,0,0,1,0,0},
{ 0,0,1,0,0,0,0,1}};
int nlines=7;
int ncols=8;
char carray[10]={'a','b','c','d','e','f','g'};
void disp(int num[7]);
int test(int num[7],int n);
int main()
{
int num[10];
for(int i=0;i<nlines;i++)
{
for(int j=0;j<ncols;j++)
cout<<narray[i][j]<<' ';
cout<<"\n"<<endl;
}
for(num[0]=0;num[0]<nlines;num[0]++)
{
for(num[1]=0;num[1]<nlines;num[1]++)
{
if(test(num,1)==1)
continue;
for(num[2]=0;num[2]<nlines;num[2]++)
{
if(test(num,2)==1)
continue;
for(num[3]=0;num[3]<nlines;num[3]++)
{
if(test(num,3)==1)
continue;
for(num[4]=0;num[4]<nlines;num[4]++)
{
if(test(num,4)==1)
continue;
for(num[5]=0;num[5]<nlines;num[5]++)
{
if(test(num,5)==1)
continue;
for(num[6]=0;num[6]<nlines;num[6]++)
{
if(test(num,6)==1)
continue;
disp(num);
}
}
}
}
}
}
}
return 0;
}
void disp(int num[])
{
int flag;
for(int i=1;i<nlines;i++)
{flag=0;
for(int j=0;j<ncols;j++)
if (narray[num[i]][j]*narray[num[i-1]][j]==1)
{
flag=1;
break;
}
if (flag==0)
break;
}
if (flag==1)
{
for( i=0;i<ncols;i++)
if (narray[num[0]][i]*narray[num[nlines-1]][i]==1)
{
flag=1;
break;
}
}
if (flag==1)
{
cout<<"success!"<<endl;
for(int i=0;i<nlines;i++)
cout<<carray[num[i]];
cout<<endl;
}
}
int test(int num[],int n)
{
int f=0;
for(int i=0;i<n;i++)
if(num[i]==num[n])
{
f=1;
break;
}
return f;
}
//以下程序运行的结果,运行时间不到一秒!
有两组结果:
ecabdfg
gfdbace