#include <iostream>
#include <string>
#define N 4
char GlbStrings[N]={'A','B','C','D'} ;
void print(char s[N])
{
printf("(%c)(%c)(%c)(%c)\n",s[0],s[1],s[2],s[3]) ;
}
bool isSafe(char c,char s[N])
{
for(int idx=0;idx<N;idx++){
if( s[idx] == c )
return false ;
} //for
return true ;
} //isSafe
bool FindAssigned(char s[N],int& col)
{
for(int idx=0;idx<N;idx++){
if( s[idx] == '0' ){
col = idx ;
return true ;
}
}
return false ;
}
bool solve(char s[N])
{
int col ;
if( !FindAssigned(s,col) )
return true ;
for(int idx=0;idx<N;idx++){
char c = GlbStrings[idx] ;
if( isSafe(c,s) ){
s[col] = c ;
if( solve(s) ){
if( col+1 == N ){
print(s) ;
s[col] = '0' ;
return false ;
}
return true ;
}
s[col] = '0' ;
}
} //for
return false ;
}
int main()
{
char s[N]={'0','0','0','0'} ;
solve(s) ;
printf("Done \n") ;
}
留言列表