Li-Fan Chen says to YSITD
@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; }