如圖,a點有乙個過河卒,需要走到目標 b點。卒行走規則:可以向下、或者向右。同時在棋盤上的任一點有乙個對方的馬(如上圖的c點),該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c點上的馬可以控制 9個點(圖中的p1,p2 … p8和 c)。卒不能通過對方馬的控制點。
棋盤用座標表示,a點(0,0)、b點(n,m)(n,m為不超過 17的整數,並由鍵盤輸入),同樣馬的位置座標是需要給出的(約定:c<>a,同時c<>b).現在要求你計算出卒從 a點能夠到達 b點的路徑的條數.
input
輸入b點的座標(n,m)以及對方馬的座標(x,y)
output
螢幕輸出乙個整數(路徑的條數)。
sample input
6 6 3 2
sample output17
思路:(1)如果沒有馬,從原點走到終點(對角)有多少種走法呢?計算的方法是:除原點外走到x軸和y軸上任意一點的走發都只有一種,其他,走到其他點的走法數=上面那點的走法數+左面那點的走法數.
(2)如果不再座標軸上的某一點不能走就把走到那點的方法數標為0,如果在座標軸上就把它及其後面所有的點都標為0,然後計算走到其他點的方法數.
//判斷馬的落腳點
int xi[9]=;
int yi[9]=;
int main()
}//將馬的落腳點標為-2
for(i=0;i<9;i++)
map[0][0]=1;
//把x軸的每個元素賦值為1,如果為馬的落腳點後面的全都賦值為0
for(i=0;i<=n;i++)
else
map[i][0]=1;
}//把y軸的每個元素賦值為1,如果為馬的落腳點後面的全都賦值為0
for(i=0;i<=m;i++)
else
map[0][i]=1;
}//將馬的落腳點標為0
for(i=0;i<9;i++)
//計算從原點到終點的步數
//計算方法:
/*0 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
*/for(i=1;i<=n;i++)
}//測試**:列印矩陣
/*for(i=0;i<=n;i++)
{for(j=0;j<=m;j++)
{cout<
馬攔過河卒
問題描述 棋盤上a 點有乙個過河卒,需要走到目標 b點。卒行走的規則 可以向下 或者向右。同時在棋盤上 c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a 點 0,0 b 點 n,m n,m為不超過 15的整數 同樣馬的位置座標是需要...
馬攔過河卒
problem description 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過15的整數 同樣...
馬攔過河卒
time limit 1000ms memory limit 65536kb submit statistic discuss problem description 的螺旋方陣當n 5和n 3時分別是如下的形式 請給出乙個程式,對於任意的輸入 0 11 輸出按照上面規律所獲得的 的螺旋方陣。inp...