這次小可可想解決的難題和中國象棋有關。在乙個 n 行 m 列的棋盤上,讓你放若干個炮(可以是 0 個),使得沒有任何乙個炮可以攻擊另乙個炮,請問有多少種放置方法。大家肯定很清楚,在中國象棋中炮的行走方式是:乙個炮能攻擊到另乙個炮,當且僅當它們在同一行或同一列中,且它們之間恰好有乙個棋中。你也來和小可可一起鍛鍊一下思維吧!
輸入一行包含兩個整數 n, m,之間由乙個空格隔開。
輸出總共的方案數。由於該值可能很大,只需給出方案數模 9999973 的結果。
樣例輸入
1 3
樣例輸出7
資料範圍限制
30% 的資料中 n 和 m 均不超過 6
50% 的資料中 n 和 m 至少有乙個數不超過 8
100% 的資料中 n 和 m 不超過 100
只要每行每列擺的數量不超過2。
設f[i][l1][l2]為截止i行,有l1列擺了1個炮,有l2列擺了2個炮。
然後分6種情況討論… …(頭裂
#include
int n,m;
long
long ans;
long
long f[
101]
[101][
101]
,c[1001
],mod =
9999973
;int
main()
for(
int l1 =
0; l1 <= m;
++l1)
for(
int l2 =
0; l2+l1 <= m;
++l2)
ans =
(ans+f[n]
[l1]
[l2]
)%mod;
printf
("%lld"
, ans)
;}
中國象棋2
using system using system.collections.generic using system.linq using system.text using system.drawing namespace chinesechess public override bool mov...
中國象棋 題解
中國象棋這道題才看到的時候,畏難情緒很重啊,先介紹題目,大意是在n行 m列的棋盤上,放若干個炮可以是 0個,使得沒有任何乙個炮可以攻擊另乙個炮。請問有多少種放置方法。考試的時候沒有其他的想法,就只想暴力騙分,用乙個一維的標記陣列,再用乙個遞迴,每排最多放兩個。後面想來,完全可以把每排最多放兩個的情況...
中國象棋主流象棋引擎分析
象棋旋風與佳佳象棋,從出現以來就廣泛吸引住了人們的眼球。在那個奇兵與大聖逐漸沒落的年代,旋風與佳佳的接連出現為象棋軟體的發展注入了新的活力。兩個軟體都採取了新的演算法,使得棋力相比過去的軟體有了較大幅度的增長,一時間風靡網路。這兩個軟體都開發了很多個版本,直到現在也沒有停息。但新版本採用了非常先進的...