首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

创新工场 笔试 八皇后有关问题

2012-10-15 
创新工场 笔试 八皇后问题其实没那么难int count 0//统计棋局个数int queen[9] {0}//表示第column列

创新工场 笔试 八皇后问题

其实没那么难

int count = 0;           //统计棋局个数int queen[9] = {0};        //表示第column列填的棋子是在第 queen[column] 行//该函数表示填充column列的棋子void eight_queen( int column ){               if( column>0 && column <9 ){             //填子while( ++queen[column] <9){int ok=1; //辅助变量,帮助判断棋子能不能填for(int i=1;i<column; ++i){                 //测试不能填棋子的情况if( queen[column]==queen[i] || column-i == queen[column]-queen[i] || column-i == queen[i]-queen[column] ){ ok=0;break;}}if( 1 == ok) {                //能填棋子的话,对后面的元素初始化for(int i=column+1;i<9;++i)queen[i]=0;eight_queen(column+1);}}}else if( 9 == column){            //表示这已经成功填入了8个皇后for( int i=1; i<9; ++i){std::cout<< 8 * ( queen[i] -1 ) +i<<'\t';}count++;std::cout<<std::endl;return -1;}}int main(void){    eight_queen(1);    std::cout<<"count="<<count<<std::endl;    getchar();    return 0;} 


热点排行