|
|
вернуться в форумDon't know the wrong Please somebody help me. I can not find the reason not to be accepted my code. #include <iostream> #include <string> #include <vector> using namespace std; bool found; string convert(string str) { string char_list = "22233344115566070778889990"; string to_digit; for(int i=0; i<str.length(); i++) { to_digit += char_list[str[i]-97]; } return to_digit; } void dfs(vector<int> index[], vector<int> ends[], string diction[], vector<int> track, int i, int n) { if(found == true) { return; } if(i == n){ for(int j=0; j<track.size(); j++) { cout<<diction[track[j]]<<" "; } found = true; return; } for(int k=0; k<ends[i].size(); k++){ track.push_back(index[i][k]); dfs(index, ends, diction, track, ends[i][k], n); track.pop_back(); } } int main() { for(; ;){ found = false; string number; cin>>number; if(number == "-1"){ break; } int dic_size; cin>>dic_size; string diction[dic_size]; for(int i=0; i<dic_size; i++){ cin>>diction[i]; } int n = number.size(); vector<int> ends[n]; vector<int> index[n]; for(int j=0; j<dic_size; j++) { string str = convert(diction[j]); int len = diction[j].size(); for(int i=0; i<n; i++) { if(number.substr(i,len) == str){ ends[i].push_back(i+len); index[i].push_back(j); } } } vector<int> track; dfs(index, ends, diction, track, 0, n); if(found == false){ cout<<"No solution."; } } return 0; } Edited by author 03.01.2017 20:24 Re: Don't know the wrong Have you tried to compile it? cin>>dic_size; string diction[dic_size]; vector<int> ends[n]; ends[i].push_back(i+len); It would be great if you post link to ideone.com (for example) run. Run should contain expected task example output. Edited by author 03.01.2017 21:35 |
|
|