产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串。我的程序错在哪?为什么总得不到答案?
#include <iostream>#include <vector>
#include <string>
using namespace std;
#pragma warning(disable: 4786)
int main()
{
vector<string> vec;
string str[3];
str[0] = "7";
str[1] = "8";
str[2] = "9";
int i, j, n;
//一下为求子串,将所求的子串方到vec容器中
for(i = 0; i <= 2; i ++)
{
vec.push_back(str[i]);//长度为1的子串
for(j = 0; j <= 2; j ++)
{
if(i != j)
{
string s;
s = str[i] + str[j];//长度为2的子串
vec.push_back(s);
}
}
}
vec.push_back(str[0] + str[1] + str[2]);
//以下为输出子串
vector<string>::iterator vec_it = vec.begin(), vec_it2;
for(vec_it = vec.begin(); vec_it != vec.end(); vec_it ++)
cout<<*vec_it<<endl;
//下面开始求长度为n的没有重复子串的字符串
cout<<"请输入需要求的字符串的长度:"<<endl;
cin>>n;
for(vec_it = vec.begin(); vec_it != vec.end(); vec_it ++)
{
string str = " " + *vec_it;//定义一个字符串变量并初始化
for(vec_it2 = vec.begin(); vec_it2 != vec.end(); vec_it2 ++)
{
vector<string>::size_type count = vec_it2->size();//求出vec_it2的长度
if(*vec_it != *vec_it2)
{
//cout<<"0000000"<<endl;
if(((str.size() - count), count, *vec_it2, 0, count) != 0 )/*字符比较,即str的最后count个字符和长度为count的*vec_it2比较,
如果相同,则不加到str中,否则加到str中*/
{
if( (str.size() - 1, 1, *vec_it2, 0, 1) != 0)/*字符比较,即str的最后一个字符和*vec_it2的第一个字符比较
如果相同,则不加到str中,否则加到str中*/
{
str = str + *vec_it2;
if(str.size() == n + 1)
cout<<str<<endl;
}
}
}
}
}
return 0;
}
产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串。我的程序错在哪?为什么总得不到答案?
帮帮忙看看,谢谢了哇~~~~~