算法比较简单,所以没有写注释
#include<stdio.h>
#include<math.h>
#define N 8
int s[N];
int main(void)
{
find(0);
puts("/n");
}
void find(int n)
{
int i;
if (n==8) {
display();
return;
}
for (i = 1; i <= N; i++) {
s[n] = i;
if (isright(n))
find(n+1);
}
}
int isright(int n)
{
int i;
for (i = 0; i < n; i++) {
if((abs(s[n] - s[i]) == abs(n - i)) || (s[i] == s[n]))
return 0;
}
return 1;
}
void display()
{
int i;
for (i = 0; i < N; i++)
printf("%d/t", s[i]);
printf("/n");
}
#include<stdio.h>
#include<math.h>
#define N 8
int s[N];
int main(void)
{
find(0);
puts("/n");
}
void find(int n)
{
int i;
if (n==8) {
display();
return;
}
for (i = 1; i <= N; i++) {
s[n] = i;
if (isright(n))
find(n+1);
}
}
int isright(int n)
{
int i;
for (i = 0; i < n; i++) {
if((abs(s[n] - s[i]) == abs(n - i)) || (s[i] == s[n]))
return 0;
}
return 1;
}
void display()
{
int i;
for (i = 0; i < N; i++)
printf("%d/t", s[i]);
printf("/n");
}