http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net
分类: Delphi
2011-10-02 16:39:55
#include
#define N 8
int a[N];
int count=0;
int flag;
void backtrack(int k);
int main()
{
backtrack(0);
printf("解的个数为:%d",count);
getchar();
return 0;
}
void backtrack(int t)
{ int i,j;
if (t==N)
{
count++;
for(i=0; i < N; i++)
{
for(j=0; j < N; j++)
if( a[i] == j) printf("@ ");
else printf("* ");
printf("\n");
}
printf("\n");
} else
{
for (i=0; i < N; i++)
{
a[t]=i;
flag=1;
for (j=0; j < t; j++)
if ( abs(a[t]-a[j])==abs(t-j) || a[t]==a[j] )
{
flag=0;
break;
}
if ( flag ) backtrack(t+1);
}
}
}