网站模板 asp pc wap,那个网站做网站托管,做ppt什么网站图片好,开发软件大全//sicily 1037. Decorations//两个字符串ch[i],ch[j],长度都一样为len,如果ch[i][1..len-1]ch[j][0..len-2],则表示连接,ch[i]-ch[j]//把每个输入的字符串当作顶点,字符串之间若是连接则建立一条边,由此得到初始图,//问题转化成求 顶点数 l-len1 的路径总数,可以用DP求解#i… //sicily 1037. Decorations//两个字符串ch[i],ch[j],长度都一样为len,如果ch[i][1..len-1]ch[j][0..len-2],则表示连接,ch[i]-ch[j]//把每个输入的字符串当作顶点,字符串之间若是连接则建立一条边,由此得到初始图,//问题转化成求 顶点数 l-len1 的路径总数,可以用DP求解#includeiostream //DP#includecstringusing namespace std;int n,l,m,len,cnt[602][602],dp[602][602];char ch[602][12];int main(){int i,j,k;while(cinnlm,n) {for(i0;im;i) cinch[i]; lenstrlen(ch[0]); memset(cnt,0,sizeof(cnt));for(i0;im;i)for(j0;jm;j) {int tag1;for(k1;klen;k)if(ch[i][k]!ch[j][k-1]) { tag0;break; }if(tag) { cnt[i][j]1; //表示ch[i]能与ch[j]连接起来,比如 CAB-ABB } } memset(dp,0,sizeof(dp));for(i0;im;i) dp[i][1]1;for(j2;jl-len1;j) //dp[i][j]表示有 j 个字符 ,结尾的字符为 ch[i] 的组合有多少种可能 for(i0;im;i) {for(k0;km;k) if(cnt[k][i]) //如果ch[k]能与ch[i]连接,则找到一条路径 dp[i][j]dp[k][j-1]; }int s0;for(i0;im;i) sdp[i][l-len1]; //最终有l-len1个字符串,len是输入的每个字符串长度,对于第一个例子,l5,len3,取BCDDA,分别由BCD,CDD,DDA组成,l-len13 coutsendl; }return 0;} 转载于:https://www.cnblogs.com/mjc467621163/archive/2011/08/22/2149156.html