一路编程题没有思路,有急用,请大神帮帮忙

一道编程题没有思路,有急用,请大神帮帮忙
有四张花样不同的牌,分别是红桃A、黑桃Q、方块J、草花10、现从中任意抽出三张牌,编写程序,求出所有的组合(假设“红桃A、黑桃Q、方块J”和“红桃A、方块J、黑桃Q”是两种不同的组合)
------解决思路----------------------
按题意,不是组合问题,而是排列了。
那就是这样:

char *p[4] =  {"HA","SQ","DJ","C10"};
for (int a = 0; a < 4; a++)
{
    for (int b = 0; b < 4; b++)
    {
        if (a == b) continue;
        for (int c = 0; c < 4; c++)
        {
            if (a == c 
------解决思路----------------------
 b == c) continue;
            printf("%s,%s,%s\n",p[a],p[b],p[c]);
        }
    }
}