英雄会第一届在线编程大赛:单词博弈 (C++代码) ---miss若尘

来源:互联网 发布:查看linux 网卡 编辑:程序博客网 时间:2024/05/21 10:31


解题思路:http://blog.csdn.net/miss_ruochen/article/details/17199887

不要忘了添加头文件呀吐舌头


int who_win (string word, map<string, int>& m){typedef pair <string, int> Who_Pair;int size = word.size();if(size < 2)return -1;if(size == 2)return 1;if(size == 3) {if(word[0] >= word[1] && word[1] >= word[2])return 0;elsereturn 1;}for(int i = 0; i < size; ++i) {if(i != 0 && word[i] == word[i-1])continue;string str = word.substr(0,i)+word.substr(i+1,size-i-1);bool flag = true;for(int j = 0; j < size-2; ++j) {if(str[j] >= str[j+1]) {flag = false;break;}}if(flag)return 1;}for(int k = 0; k < size; ++k) {if(k != 0 && word[k] == word[k-1])continue;string strtmp = word.substr(0,k)+word.substr(k+1,size-k-1);map<string, int> :: iterator m_iter;m_iter = m.find(strtmp);int state;if(m_iter == m.end()) {state = who_win(strtmp, m);m.insert( Who_Pair (strtmp, state) );}else {state = m_iter->second;}if( !state )return 1;}m.insert( Who_Pair (word, 0) );return 0;}int who (string word){map<string, int> m;typedef pair <string, int> Who_Pair;m.insert( Who_Pair ("a",0) );return who_win(word, m);}


忘了说,为什么我在who函数里要给map插入一个字符'a',因为我不想每次在查找前都要判断map是否为空,不知道频繁的判断是不是会降低速度,所以我宁愿随便插入点什么了,而且字符'a’长度为1不会影响原思路的判断的,随便给的而已


原创粉丝点击