一个程序 大家看看有什么问题吗??
运行了下 怎么有重复的 这是怎么回事?请各位大侠指点#include<stdio.h>
#include<math.h>
#define N 8
#define M 5
void check(int p[]){
int i,j;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(p[i]*p[j]!=0){
if(abs(p[j]-p[i])==j-i)
return;
if(p[j]-p[i]==0) return;
}
for(i=0;i<N;i++)
printf("%d",p[i]);
printf("\n");
}
void permute(int n,int p[]){
int i,j,count;
if(n==1)
check(p);
for(i=0,count=n-1;i<N;i++)
if(!p[i]){
for(j=i+1;j<N+1;j++)
{
p[i]=j;
permute(count,p);
p[i]=0;
}
}
}
int main(){
static int p[N];
int n=M;
permute(n+1,p);
return 0;
}