Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
trie+从后往前的dp 少部分测试数据WA 哪位大牛帮忙看下哪里出了问题 附数据#include<iostream> using namespace std; struct Node{ int id; Node *branch[26]; Node(){ id=-1; for(int i=0;i<26;i++) branch[i]=NULL; } }; Node root; //char dic[605][30]; char message[305]; int w,l,end; int f[305]; void insert(char str[30],int id){ Node *temp=&root; int index; for(int i=0,len=strlen(str);i<len;i++){ index=str[i]-'a'; if(temp->branch[index]==NULL) temp->branch[index]=new Node(); temp=temp->branch[index]; } temp->id=id; } int dp(int start){ Node *temp=&root; int min=end-start+1,minTemp,d=0; int index=message[start]-'a'; if(temp->branch[index]==NULL)//以message[start]打头的词根本不存在 return 1+f[start+1]; for(int i=start;i<=end;i++){ index=message[i]-'a'; //遇到不存在的,则跳过,d++ if(temp->branch[index]==NULL){ d++; }else{ temp=temp->branch[index]; //trie中对应id不为-1,即找到一个单词 if(temp->id!=-1){ minTemp=d+f[i+1]; if(minTemp<min) min=minTemp; } //trie中对应不为NULL但为-1 } minTemp=i-start+1+f[i+1];//每一步都要判断!!!必须的!!!! if(minTemp<min) min=minTemp; } return min; } int main(){ int i; char str[30]; scanf("%d%d",&w,&l); scanf("%s",&message); for(i=1;i<=w;i++){ //scanf("%s",dic[i]); //insert(dic[i],i); scanf("%s",&str); insert(str,i); } end=strlen(message)-1; for(i=end;i>=0;i--) f[i]=dp(i); printf("%d\n",f[0]); system("pause"); return 0; } /* 下面是WA的一组数据: 40 50 owoooccccwococoowcoowowwccowwoocoowcowocwccwoowwwc cwowocwwoo occccwococ cowcwcowwwoow wocowwowww oowwcccocwowc cwoooowoowowww cwwooccc coocwcowowowc wcwowwowo owwowwoc oooowwcwoow wwcoocccwwo owowoooo wocccwwooow ccwwwoocwwc wwwcwwwccwww wwowwococ ccwwcwcc cowwccwwccow cwocowoccc wowwwwwcw ocwowwcwo oowowoowwcc ooccoccwww coowwcccwooo ooccwoooccc oocwccwowco cwccwcooc wwocwoooocwwo cwocowwccocwcwc wwooccwowwo cccccowcwc ocwccwcwco coccowocc owwwcooowowwc wwwocwowcoc cowoccoooco wwwowcoccwc cwcowowooc cwooowwwc 20 */ Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator