63,596
社区成员




//如果只是统计字串的数目,穷举算了;
#define Len(a) sizeof (a)/sizeof(a[0])
int main()
{
enum Index {ab, ac, ad, bc, bd, cd, abc, abd, bcd};
char Table[][5]={"ab", "ac", "ad", "bc", "bd", "cd", "abc", "abd", "bcd"};
char cDest[]={'a', 'b', 'c', 'd'};
int iSrc[][4]={
{0,1,1,1},
{1,1,1,1},
{1,0,1,1},
{1,1,0,0}
};
int iDest[9]={0};
for(int i=0; i<Len(iSrc); i++)
{
int sum=0;
for (int k=0; k<4; k++)
sum+=iSrc[i][k];
if(sum==4)
for (int j=0; j<Len(iDest); j++)
iDest[j]++;
if(sum==3)
{
if(iSrc[i]['a'-'a']&&iSrc[i]['b'-'a']&&iSrc[i]['c'-'a'])
iDest[abc]++;
if(iSrc[i]['a'-'a']&&iSrc[i]['b'-'a']&&iSrc[i]['d'-'a'])
iDest[abd]++;
if(iSrc[i]['b'-'a']&&iSrc[i]['c'-'a']&&iSrc[i]['d'-'a'])
iDest[bcd]++;
sum--;
}
if(sum==2)
{
if(iSrc[i]['a'-'a']&&iSrc[i]['b'-'a'])
iDest[ab]++;
if(iSrc[i]['a'-'a']&&iSrc[i]['c'-'a'])
iDest[ac]++;
if(iSrc[i]['a'-'a']&&iSrc[i]['d'-'a'])
iDest[ad]++;
if(iSrc[i]['b'-'a']&&iSrc[i]['c'-'a'])
iDest[bc]++;
if(iSrc[i]['b'-'a']&&iSrc[i]['d'-'a'])
iDest[bd]++;
if(iSrc[i]['c'-'a']&&iSrc[i]['d'-'a'])
iDest[cd]++;
}
}
for (int i=0; i<Len(iDest); i++)
{
cout<<Table[i]<<"'s\tnumber is: ";
cout<<iDest[i]<<endl;
}
return 0;
}