|
|
back to boardMy code pass the tests "in console", but it is a wrong answer :(. c++ Hi everyone, I was trying to solve this problem, and I use an algorithm that works on "codeblocks", but doesn't work here. I would like that someone help me. This is the code, what is wrong with it? It's Inefficient? Thanks. #include<iostream> #include<vector> #include<string> using namespace std; string convertir(string s){ string conv=""; for(int i=0;i<s.size();i++){ if(s[i]=='i'||s[i]=='j') conv+="1"; else if(s[i]=='a'||s[i]=='b'||s[i]=='c') conv+="2"; else if(s[i]=='d'||s[i]=='e'||s[i]=='f') conv+="3"; else if(s[i]=='g'||s[i]=='h') conv+="4"; else if(s[i]=='k'||s[i]=='l') conv+="5"; else if(s[i]=='m'||s[i]=='n') conv+="6"; else if(s[i]=='p'||s[i]=='r'||s[i]=='s') conv+="7"; else if(s[i]=='t'||s[i]=='u'||s[i]=='v') conv+="8"; else if(s[i]=='w'||s[i]=='x'||s[i]=='y') conv+="9"; else conv+="0"; } return conv; } int main(){ string number,aux; vector<string> dictionary; vector<string> converted; int n; while(cin>>number){ if(number=="-1") break; cin>>n; dictionary.clear(); converted.clear(); for(int i=0;i<n;i++){ cin>>aux; dictionary.push_back(aux); converted.push_back(convertir(aux)); } bool max[100]; for(int i = 1; i<100; i++){ max[i]=false; } max[0]=true; vector<string> sequence(number.size()+1,""); for(int i=1;i<=number.size();i++){ for(int j=0;j<n;j++){ if(converted[j].size()<=i && number.substr(i-converted[j].size(),converted[j].size())==converted[j]){ max[i]=true && max[i-converted[j].size()]; sequence[i]=sequence[i-converted[j].size()]+dictionary[j]+" "; } } } if(max[number.size()]==false) cout<<"No solution."<<endl; else{ aux=sequence[number.size()]; aux.erase(aux.size()-1); cout<<aux<<endl; } } return 0; } |
|
|