#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") ;
}

 

arrow
arrow
    全站熱搜

    hedgezzz 發表在 痞客邦 留言(0) 人氣()