DP 中國象棋

2021-10-09 03:20:18 字數 975 閱讀 2268

這次小可可想解決的難題和中國象棋有關。在乙個 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個,使得沒有任何乙個炮可以攻擊另乙個炮。請問有多少種放置方法。考試的時候沒有其他的想法,就只想暴力騙分,用乙個一維的標記陣列,再用乙個遞迴,每排最多放兩個。後面想來,完全可以把每排最多放兩個的情況...

中國象棋主流象棋引擎分析

象棋旋風與佳佳象棋,從出現以來就廣泛吸引住了人們的眼球。在那個奇兵與大聖逐漸沒落的年代,旋風與佳佳的接連出現為象棋軟體的發展注入了新的活力。兩個軟體都採取了新的演算法,使得棋力相比過去的軟體有了較大幅度的增長,一時間風靡網路。這兩個軟體都開發了很多個版本,直到現在也沒有停息。但新版本採用了非常先進的...