编辑代码

#include <stdio.h>

void f(int i, int n, int *select, bool *isused) {
	if(i == n) {
		for(int i = 0; i < 9; ++i) {
			printf("%d ", select[i]);
		}
		printf("\n");
		return;
	} else {
		for(int j = 0; j < 9; ++j) {
			if(i == 0 || i == n-1) {
				if(j == 0 || j == 2 || j == 6 || j == 8) continue;
				else if(isused[j] == 0) {
					isused[j] = true;
					select[i] = j;
					f(i+1, n, select, isused);
					isused[j] = false;
				}
			} else {
				if(j == select[i-1]-1 || j == select[i-1]+1) continue;
				else if(isused[j] == 0) {
					isused[j] = true;
					select[i] = j;
					f(i+1, n, select, isused);
					isused[j] = false;
				}
			}
		}
	}
}

int main () {
	int select[9];
	bool isused[9];
	f(0, 9, select, isused);
}