`

poj 3096

 
阅读更多

题意:

定义D-pairs表示取字符串s中相距为D的两个字母所构成的字母对,该字母对中两个字母的位置顺序与他们在主串s中的位置顺序一致。定义D-unique表示,若从字符串s中取出所有相距为D的字母对D-pairs,且这些D-pairs都是独一无二的,那么成字符串s是一个D-unique串。D的取值范围为0~s.len()-2

思路:用STL里面的vector 即可 暴力破解:

代码如下:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
	string str;
    while(cin>>str,str != "*") 
	{
		int len = str.length();
		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(int it = 0; it < len - i - 1; it++) 
			{
                char ch[3];
                ch[0] = str[it];
                ch[1] = str[it + 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;
                    }
                }
            }
        }
		if(is_sur) //测试完所有D-pairs串,均unique
		 cout << str << " is surprising." << endl;
		else
		 cout << str << " is NOT surprising." << endl;
    }
    return 0;
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics