#include
using namespace std;
int table[4][5]={1,2,3,4,5,2,3,4,5,6,3,4,5,6,7,4,5,6,7,8};
int dfs(int (*A)[5],int a,int b,int sum){
int res=0;
if(sum==36)
res++;
for(int i=0;i<=1;i++){
for(int j=0;j<=1;j++){
if(b<4&&a<3)
dfs(A,a+i,b+j,sum+A[a+i][b+j]);
if(a==3)
for(int k=0;k<=1;k++)
dfs(A,a,b+k,sum+A[a][b+k]);
if(b==4)
for(int m=0;m<=1;m++)
dfs(A,a+m,b,sum+A[a+m][b]);
}
}
return res;
}
int main(){
cout<<dfs(table,0,0,0)<<endl;
return 0;
}
有什麼問題感覺沒問題可輸出不了。。。大神幫忙看下
標題: 振興中華
小明參加了學校的趣味運動會,其中的一個項目是:跳格子。
地上畫著一些格子,每個格子裡寫一個字,如下所示:(也可參見p1.jpg)
從我做起振
我做起振興
做起振興中
起振興中華
比賽時,先站在左上角的寫著“從”字的格子裡,可以橫向或縱向跳到相鄰的格子裡,但不能跳到對角的格子或其它位置。一直要跳到“華”字結束。
要求跳過的路線剛好構成“從我做起振興中華”這句話。
請你幫助小明算一算他一共有多少種可能的跳躍路線呢?
答案是一個整數,請通過浏覽器直接提交該數字。
注意:不要提交解答過程,或其它輔助說明類的內容。
下面那處無限遞歸了吧
if(b<4&&a<3)
dfs(A,a+i,b+j,sum+A[a+i][b+j]);
每次第一個循環的時候,i和j都是0,然後又調dfs.........