枚举前两个状态的时候加上这个:
if((j&val[i-1]))continue; if((j&(j<<1))||(j&(j<<2)))continue;
其中 valival_ivali 表示第 iii 行的地和山的状态。
因为满足这种条件的状态本质上不多,而因为两层循环所以会减少很多情况。