..............................................
第一题呢可以直接使用C++里面的排列组合函数next_permutation来解决,枚举出所有排列情况,然后去除掉三个男生在一起或者三个女生在一起的情况。代码如下:
using namespace std;
char que[9]="ABCDabcd";
int main()
{
int i,j,flag;
for(i=0; i<N; i++){ //枚举所有排列
for(flag=j=0; j<6; j++) //判断是否有三个男生或女生在一起
if ( isupper(que[j])&&isupper(que[j+1])&&isupper(que[j+2]) //三个男生在一起
||islower(que[j])&&islower(que[j+1])&&islower(que[j+2])) //三个女生在一起
{
flag = 1;
break;
}
if(!flag)
cout << que << endl;
next_permutation(que,que+8); //求下一个排列
}
return 0;
}
emmm,输出到文件的话,你自己处理一下吧hh