@S_ean
#include <iostream>
#include <stdio.h>
using namespace std;
int dotType[9] = {1,2,1,
4,3,4,
1,2,1};
bool check(int nextDot,int currentDot,bool dot[9]){
if(dot[nextDot]){
return false;
}else if(dotType[nextDot]==dotType[currentDot]){
if(dot[(nextDot+currentDot)/2]==false){
return false;
}
}
return true;
}
int genPath(bool dot[9],int j,int dotArray[9],int level){
dot[j] = true;
dotArray[level]=j;
cout << "dot:" << level+1 ;
for(int i = 0; i < 9; i++) {
if(dotArray[i]==9){
cout <<" N";
}else{
cout <<" " << dotArray[i]+1 ;
}
}
printf("\n");
if(level!=8){
for(int i=0;i<9;i++){
if(check(i,j,dot)){
genPath(dot,i,dotArray,level+1);
}
}
}
dot[j] = false;
dotArray[level]=9;
return 0;
}
int main(){
//printf("Hello Wolrd\n");
bool dot[9]={false,false,false,
false,false,false,
false,false,false};
int dotArray[9]={9,9,9,9,9,9,9,9,9} ;
for(int i=0;i<9;i++){
genPath(dot,i,dotArray,0);
}
return 0;
}