C++ 输入字符串,然后输出字符串的所有组合,如输入:abc 输出:a,b,c,ab,ac...

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

void Combination(char* string, int number, vector<char>& result)

{
if(number == 0)
{
vector<char>::iterator iter = result.begin();
for(; iter < result.end(); ++ iter)
printf("%c", *iter);
printf("\n");
return;
}
if(*string == '\0')

return;
result.push_back(*string);

Combination(string + 1, number - 1, result);
result.pop_back();
Combination(string + 1, number, result);
}

void combination(char* string)
{
if(string == NULL)
return;
int length = strlen(string);
vector<char> result;
for(int i = 1; i <= length; ++ i)
{
Combination(string, i, result);
}
}

int main()
{
char *str ="abcd";
combination(str);
getchar();
return 0;
}

亲高手一下哪里不对! 一直提示warning..不清楚是哪里出错

不是错误 只是提醒你字符串不能修改 还有头文件没包含全

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;

void Combination(const char* string, int number, vector<char>& result)//const

{
    if(number == 0)
    {
        vector<char>::iterator iter = result.begin();
        for(; iter < result.end(); ++ iter)
            printf("%c", *iter);
        printf("\n");
        return;
    }
    if(*string == '\0')

        return;
    result.push_back(*string);

    Combination(string + 1, number - 1, result);
    result.pop_back();
    Combination(string + 1, number, result);
}

void combination(const char* string)//const
{
    if(string == NULL)
        return;
    int length = strlen(string);
    vector<char> result;
    for(int i = 1; i <= length; ++ i)
    {
        Combination(string, i, result);
    }
}

int main()
{
    const char *str ="abcd";//const
    combination(str);
    getchar();
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-11
warning是不用管的.只有error才用看.
相似回答