是中国标题。大家都说水问题。但是,良好的1A它?
标题效果:
给出n*m的矩阵,当某个单元格有炮兵部队时它的上下左右两格(不包含斜着的方向)是这支部队的攻击范围。问在两支部队之间不可能相互攻击到的情况下。最多能部署多少炮兵部队。
解题思路: 状态压缩DP,DP[i][j][k]代表当第i行是第j种状态时。第i-1行是第k种状态时,布置炮兵的最大数量。
状态能够预先处理出来,仅仅有60种。
以下是代码:
#include#include #include #include #include using namespace std;int min(int a,int b){ if(a>b)a=b; return a;}int max(int a,int b){ if(a >=1; } vaild[cnt++]=i; }}int place[105];char s[15];int dp[105][65][65];int main(){ judge(); while(scanf("%d%d",&n,&m)!=EOF) { int ans=0; for(int i=1; i<=n; i++) { scanf("%s",s); place[i]=0; for(int j=0; j