題目大意:(如題)
輸入輸出:(如題)
解題思路:
1.簡單動(dòng)態(tài)規(guī)劃。
2.糾結(jié)的邊界處理,不建議采用dp[i]表示s前i個(gè)字符能否取得這種方法。用這種方法實(shí)現(xiàn)字符串儲(chǔ)存的時(shí)候會(huì)比較麻煩。而且如果存儲(chǔ)不對(duì)邊界處理會(huì)非常麻煩……(最先我采用的是這種方法,結(jié)果WA 4次,多次處理還是有長度為0和長度為1的情況無法分辨,最終放棄)
核心代碼:
lens=s.length(); for(i=0;i<lens;i++) { for(j=0;j<cntp;j++) { flag=false; len=p[j].length(); if(i+len>lens)//如果加入這個(gè)字符串超過了s的長度則不滿足條件 continue; for(k=0;k<len;k++) if(s[i+k]!=p[j][k])//有一個(gè)字符不同不滿足條件 { flag=true; break; } if(flag==false&&len+i>maxn)//滿足條件更新最大值 maxn=len+i; } if(i+1>maxn)//結(jié)束條件 break; }
更多建議: