#19613: 有人可以給個思路嗎


bill98096@gmail.com (高良)

學校 : 不指定學校
編號 : 99816
來源 : [123.192.84.115]
最後登入時間 :
2020-04-12 21:33:36
e431. 不交錯一筆走完 -- π | From: [123.192.84.115] | 發表日期 : 2019-10-13 19:55

測試數字小時總是沒問題(大的不知答案),但測試只拿20%

 
#19615: Re:有人可以給個思路嗎


jackyname1@gmail.com (☆♬○♩程式家小崴●♪✧♩)

學校 : 基隆市私立二信高級中學
編號 : 77382
來源 : [114.32.51.178]
最後登入時間 :
2022-04-12 19:45:18
e431. 不交錯一筆走完 -- π | From: [36.225.41.250] | 發表日期 : 2019-10-13 21:53

測試數字小時總是沒問題(大的不知答案),但測試只拿20%

你是用 DFS 嗎!??

這題算是 DFS 的基礎應用 歐~~

 

 
#19620: Re:有人可以給個思路嗎


bill98096@gmail.com (高良)

學校 : 不指定學校
編號 : 99816
來源 : [123.192.84.115]
最後登入時間 :
2020-04-12 21:33:36
e431. 不交錯一筆走完 -- π | From: [123.192.84.115] | 發表日期 : 2019-10-14 18:26

測試數字小時總是沒問題(大的不知答案),但測試只拿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執行完所有起始點加總就是我的答案

 
ZeroJudge Forum