注册 登录
编程论坛 C++教室

产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串。我的程序错在哪?为什么总得不到答案?

婷婷99 发布于 2012-03-12 23:51, 1684 次点击
#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的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串。我的程序错在哪?为什么总得不到答案?
帮帮忙看看,谢谢了哇~~~~~
4 回复
#2
婷婷992012-03-13 17:35
怎么没人看呢?
#3
婷婷992012-03-13 22:39
程序代码:
#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;
}

#4
婷婷992012-03-13 22:41
原来是这样发代码呀,以前都是直接发,没有那种彩色的字,看到别人发的都有,现在终于知道了。
哎,都没人看。自己帮顶……
#5
BianChengNan2012-03-17 12:40
能简单的说说思路吗???
1