面试例题1:请编写-一个函数,把字符串中的所有字符子串的各种组合形式全部都显示出来。字符子串的长度范围是从一个字符到
字符串的长度。不管排列顺序如何,只要两种组合中的字符完全一样, 它们就是同一种组合。比如:给定字符串"hart”,
则“ha” 和“har” 是不同的组合,而“ha”和“ah"是相同的组合。
#include<iostream>
using namespace std;
void func(char a[], char p[], int length, int res, int start)
{
for (int i = start; i < length; i++)
{
p[res] = a[i];
p[res + 1] = 0;
printf("%s\n", p);
if (i < length - 1)
{
func(a, p, length, res + 1, i + 1);
}
}
}
int main()
{
char a[] = "hart";
int length = strlen(a);
char *p = (char *)malloc(length + 1);
func(a, p, length, 0, 0);
return 0;
}
结果:
h
ha
har
hart
hat
hr
hrt
ht
a
ar
art
at
r
rt
t
面试例题1:请编写-一个函数,把字符串中的所有字符子串的各种组合形式全部都显示出