#include #include using namespace std; #define mod 100000000 int m,n,top=0; int state[600]; int dp[20][600];//dp[i][j]表示第i行,第j种编号时,前i行的可行方案数 int cur[20]; bool check(int x){//判断编号x的二进制数是否有相邻的1,有则返回0 if(x&x<<1) return 0; return 1; } bool fit(int x,int k){//判断编号x的种植情况是否与土地的肥沃匹配 if(x&cur[k]) return 0; return 1; } void init(){//记录所有没有相邻1的编号 top=0; for(int i=0;i<1<