状压dp(基础)

 ➢ 题目大意:有一个m*n的矩阵,每一个方格就是一块牧场,每一个牧场适合种玉米用1表示,不适合用0表示,放牧时相邻的两块玉米地只能有一头牛,求有多少种放牧方案,一头牛也不放也是一种

➢ 数据范围: (1 m 12; 1 n 12)

➢ 输入:第一行 n,m,接下来是m*n的矩阵,1表示适合种玉米,0表示不适合

➢ 输出:一行,放牧的方案数mod 1e8.

Hint:放牧1头牛有4种方案,2头牛有3,3头牛1,一头牛不放1=4+3+1+1=9

输入样例

2 3

1 1 1

0 1 0

输出样例

9

这是一道很基础的状压dp,通过枚举每一行的状态和上一行的状态,有上一行推知此行即可,枚举状态时注意限制

➢ 假设f[i][j]表示前i行且第i行的状态为j时合法放牧方案数。

➢ 转移方程:f[i][j]+=f[i-1][k],((j & k)==0)

原文地址:https://www.cnblogs.com/HZOIDJ123/p/13190091.html