用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,
如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连.。我弄了一个很笨 的办法。
void Print_Int(int *s)
{
//enum number{zero,one,two,three,four,five};
int i,j,k,l,m,n,pre;
int d=0;
for (i=0;i<6;i++)
{
for (j=0;j<6;j++)
{
if (i!=j)
{
if ((((i==5)&&(j==3))||((i==3)&&(j==5)))==false)
{
for (k=0;k<6;k++)
{
if ((i!=k)&&(j!=k)&&(k!=4))
{
if ((((k==5)&&(j==3))||((k==3)&&(j==5)))==false)
{
for (l=0;l<6;l++)
{
if ((i!=l)&&(j!=l)&&(k!=l))
{
if ((((k==5)&&(l==3))||((k==3)&&(l==5)))==false)
{
for (m=0;m<6;m++)
{
if ((i!=m)&&(j!=m)&&(k!=m)&&(l!=m))
{
if ((((l==5)&&(m==3))||((l==3)&&(m==5)))==false)
{
for (n=0;n<6;n++)
{
if ((i!=n)&&(j!=n)&&(k!=n)&&(l!=n)&&(m!=n))
{
if ((((m==5)&&(n==3))||((m==3)&&(n==5)))==false)
{
d=d+1;
printf("%d:",d);
printf("%d%d%d%d%d%d",s[i],s[j],s[k],s[l],s[m],s[n]);
printf("\n");
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}