递归+回朔,超级好的题目ZOJ1002/HDU1045
1、棋盘问题,如果要用递归,最好是用一维数组来传递参数。 2、注意截止条件的运用。 3、剪枝条件很明显,但是很多,不能出错 Problem : 1045 ( Fire Net ) Judge Status : Accepted RunId : 1346734 Language : C++ Author : 05xiaofendui Code Render Status : Rendered By HDOJ C++ Code Rander Version 0.01 Bet #include<iostream> using namespace std ; int n ; //实际上棋盘的规模 int FinalCount = 0 ; int map [ 4 ][ 4 ]={ 0 }; /*0 自由状态,1 已经住人 ,-1 是墙*/ int panduan ( int row , int col ) { int left_i , right_i , up_i , down_i ; //先向左看 int temp_row = row ; int temp_col = col ; for ( left_i = 1 ; left_i < n && temp_col > 0 ; left_i ++) { temp_col --; if ( map [ temp_row ][ temp_col ]==- 1 ) break ; //这边就不用再看了 else if ( map [ temp_row ][ temp_col ]== 1 ) return 0 ; //这个方向有人了,不要再探索了 } temp_col = col ; for ( right_i = 1 ; right_i < n && temp_col < n - 1 ; right_i ++) { ...