#include <stdio.h>
int a[8];
int isOk(int t) {
for (int i = 1; i < t; i++) {
if (a[i] == a[t] || a[t] == a[i]+i+1)
return 0;
}
return 1;
}
void traceback(int t) {
if (t == 8) {
if (a[7] == 1 && a[4] == 2) {
int b[15] = {0};
for (int i = 1; i < 8; i++) {
b[a[i]] = i;
b[a[i]+i+1] = i;
}
for (int i = 1; i < 15; i++) {
if (!b[i])
return;
}
for (int i = 1; i < 15; i++)
printf("%d", b[i]);
}
} else {
for (int i = 1; i <= 14; i++) {
a[t] = i;
if ( t+i+1 <=14 && isOk(t))
traceback(t+1);
}
}
}
int main() {
traceback(1);
return 0;
}
数字排列
最新推荐文章于 2022-02-28 23:40:16 发布