Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int inf=1e8+1;int dp[52][52][52][4][4][4],ans;int get_dp(){memset(dp,inf,sizeof(dp));dp[1][0][0][0][0][3]=1;dp[0][1][0][1][0][3]=1;dp[0][0][1][2][0][3]=1;for(int i=0;i<=50;i++){for(int j=0;j<=50;j++){for(int k=0;k<=50;k++){for(int li=0;li<3;li++){for(int lj=0;lj<3;lj++){for(int lk=1;lk<=3;lk++){if(dp[i][j][k][li][lj][lk]!=inf)//i个A,j个B,k个C,li为长的那一列的最上面的类型,lj为短的,lk为长的与短的相距多少,{for(int ad=0;ad<3;ad++){int fi=i,fj=j,fk=k;if(ad==0)fi++;