#include <stdio.h>
bool find(const char & ch, char *arr, const int & size, const int & forbid)
{
if(size == 0) return false;
if(size == forbid)
{
return find(ch, arr + 1, size - 1, forbid);
}
else
{
// printf("find %c from arr : %s\n", ch, arr);
return ch == arr[0] ? true : find(ch, arr + 1, size - 1, forbid);
}
}
void output(char * arr, const int & total, char *start, const int & size)
{
if(size == 0) return;
else
{
if(find(start[0], arr, total, size))
{
return output(arr, total, start + 1, size - 1);
}
else
{
printf("%c\n", start[0]);
return;
}
}
}
int main()
{
char a[] = "abcab";
output(a, sizeof(a), a, sizeof(a));
}
思想其实很简单,首先是递归整个数组,再依次在整个数组中查找是否有相同元素,利用大小来排除同一元素的情况