POJ-3096-Surprising Strings-解题报告

暴力求解的,什么也不说了,上代码。

#include <iostream> #include <vector> using namespace std; int main() { string str; while(cin >> str, str != "*") { string::size_type len = str.length(); /*若字符串的长度为1或者2,则肯定是surprising*/ if(len == 1 || len == 2) { cout << str << " is surprising." << endl; continue; } bool is_sur = true; /*对D-pairs行测试,其中D的大小为[0, length(str)-2]*/ for(int i = 0; i <= len - 2; i++) { vector<string> strvec; //存储i-pairs字符串 for(string::size_type ix = 0; ix < len - i - 1; ix++) { char ch[3]; ch[0] = str[ix]; ch[1] = str[ix + i + 1]; ch[2] = '/0'; string new_str(ch); //生成一个新的i-pairs串 strvec.push_back(new_str); //插入 } /*判断i-pairs是否unique*/ for(vector<string>::size_type ix = 0; ix != strvec.size() - 1; ix++) { for(vector<string>::size_type ix2 = ix + 1; ix2 != strvec.size(); ix2++) { /*若有两个i-pairs串是相同的,则跳出*/ if(strvec[ix] == strvec[ix2]) { is_sur = false; goto lab; } } } } lab: if(is_sur) //测试完所有D-pairs串,均unique cout << str << " is surprising." << endl; else cout << str << " is NOT surprising." << endl; } return 0; }

你可能感兴趣的:(String,测试,存储)