| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中对于任 ...
只看楼主 加入收藏
婷婷99
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-2-28
结帖率:25%
收藏
 问题点数:0 回复次数:4 
产生由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的字符串,并且在字符串中对于任何一个子串而言,都不会有相邻的、完全相同的子串。我的程序错在哪?为什么总得不到答案?
帮帮忙看看,谢谢了哇~~~~~
搜索更多相关主题的帖子: include warning 字符串 
2012-03-12 23:51
婷婷99
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-2-28
收藏
得分:0 
怎么没人看呢?
2012-03-13 17:35
婷婷99
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-2-28
收藏
得分:0 
程序代码:
#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;
}

2012-03-13 22:39
婷婷99
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-2-28
收藏
得分:0 
原来是这样发代码呀,以前都是直接发,没有那种彩色的字,看到别人发的都有,现在终于知道了。
哎,都没人看。自己帮顶……
2012-03-13 22:41
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
能简单的说说思路吗???

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-17 12:40
快速回复:产生由7,8,9这3个数字符号所构成、长度为n的字符串,并且在字符串中 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023814 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved