//这题的测试数据很水,以为下面的做法会超时的!呵呵! 题意:在一个字符串中,给出一些字符间的距离,然后
//让你根据这距离再重新组成字符串,检查是否有相同的字符串存在!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> v;
int main()
{
string str, tmp;
int i, len, d, j, size, k, l;
bool flag1, flag2;
while (cin >> str)
{
if(str == "*") break;
len = str.length();
flag2 = false;
if (len == 1)
cout << str << " is surprising." << endl;
else
{
d = len - 2;//字符的距离范围
for (i = 0; i <= d; i++)//对每一种的距离暴力
{
v.clear();
flag1 = false;
for (j = 0; j < len; j++)
{
if (j+i+1 >= len) break;
else
{
tmp.clear();
tmp.push_back(str[j]);
tmp.push_back(str[j+i+1]);
v.push_back(tmp);
}
}
size = v.size();
//对结果进行判断,如果有相同的字符串,就立刻退出,不用再往下判断!
for (k = 0; k < size; k++)
for (l = k+1; l < size; l++)
{
if (v[k] == v[l])
{
flag1 = true;
break;
}
}
if (flag1)
{
cout << str << " is NOT surprising." << endl;
flag2 = true;
break;
}
}
if (!flag2)
cout << str << " is surprising." << endl;
}
}
system("pause");
}
poj 3096 Surprising Strings
最新推荐文章于 2024-10-17 16:43:27 发布