/*
*找出從(x1,y1)向右(y1,y2)可行移動的總數。
*/
int getWays(int x1,int y1,int x2,int y2)
{
if(y 1 & gt;Y2) //在目標的右側
返回0;
else if(y 1 = = y2 & amp;& ampx1!= x2) //在目標的垂直線上,但不在同壹點上。
返回0;
else if(y 1 = = y2 & amp;& ampX1 == x2) //與目標相同。
返回1;
Else{ //分而治之,求四招之和。
int result = 0;
if(x 1 & gt;1) //可以去1。
result+= getWays(x 1-1,y1 + 2,x2,y2);
if(x 1 & gt;2) //可以去2。
result += getWays(x1 - 2,y1 + 1,x2,y2);
if(x 1 & lt;5) //可以按1。
result+= getWays(x 1+1,y1 + 2,x2,y2);
if(x 1 & lt;4) //可以輸入2。
result += getWays(x1 + 2,y1 + 1,x2,y2);
返回結果;
}
}
無效總管(無效)
{
int x,y;//目標坐標
Printf("請輸入目標坐標:\ n ");
scanf("%d%d ",& ampx & amp;y);
Printf("總不同方式:% d \ n ",getways (1,1,x,y));
}
如果不理解,再溝通。...