測試數字小時總是沒問題(大的不知答案),但測試只拿20%
你是用 DFS 嗎!??
這題算是 DFS 的基礎應用 歐~~
int search(int l,bool table[],int check,int r){
if(check==m*n&&l>=r)
return 1;
int sum=0;
bool mytable[(m+2)*(n+2)];
for(int i=0;i<(m+2)*(n+2);i++)
mytable[i]=table[i];
mytable[l]=true;
if(mytable[l-n-2]==false)
sum+=search(l-n-2,mytable,check+1,r);
if(mytable[l+n+2]==false)
sum+=search(l+n+2,mytable,check+1,r);
if(mytable[l+1]==false)
sum+=search(l+1,mytable,check+1,r);
if(mytable[l-1]==false)
sum+=search(l-1,mytable,check+1,r);
return sum;
}這是我的方法(r為原始點,check為深度,table為方格陣列的一維表示,l為座標)
if(check==m*n&&l>=r)的l>=r是避免圖形相同首尾互換
table初始設定(3*2):11111100011000111111(共(3+2)*(2+2)個)
11111
10001
10001
11111
用search執行完所有起始點加總就是我的答案