/*
状压dp
刚开始&写成&&看了好长时间T0T.
状态转移方程
dp[i][k][j]=Max(dp[i][k][j],dp[i-1][l][k]+num[i][j]);(第i行的第j个状态有上一行的第k个状态得到)
num[i][j]有两个功能,第一:判断第i行第j个状态是否合法
第二:判断第i行第j个状态的数目
*/
#include
#include
#define N 110 int dp[N][N][N]; char s[N][N]; int len; int ss[N],ans,num[N][N]; int n,m; int lower[20]; int f(int i,int d) { int k=0,j; for(j=0; j
vv?v:vv; } void slove() { int i,j,k,l; memset(dp,-1,sizeof(dp)); len=0; for(i=0; i<(1<