百度2014校园招聘笔试题
题目:给出一个数据A={a_0,a_1,a_2…a_n}(其中n可变),打印出该数值元素的所有组合。
分析:因为题目要求n可变,所以不可能是n层for循环的方式,可以采用递归的方式来实现,每次取一个元素,在剩下元素的数组中递归,要注意递归结束的条件。
void StringTest(CString source, CStringArray& dest)
{
if (source.IsEmpty())
{
}
else
{
CString temp = source.Left(1);
CStringArray arr;
source = source.Mid(1);
StringTest(source, dest);
arr.Append(dest);
for (int i = 0; i<dest.GetSize(); i++)
{
CString data = dest.GetAt(i);
dest.SetAt(i, temp + data);
}
dest.Append(arr);
dest.Add(temp);
}
}