首页 新闻 会员 周边 捐助

排列组合问题 C语言

0
[待解决问题]

..............................................

HFGEIURWHGPEIU的主页 HFGEIURWHGPEIU | 菜鸟二级 | 园豆:202
提问于:2020-12-12 22:54
< >
分享
所有回答(1)
1

第一题呢可以直接使用C++里面的排列组合函数next_permutation来解决,枚举出所有排列情况,然后去除掉三个男生在一起或者三个女生在一起的情况。代码如下:

include<iostream>

include<algorithm>

include<ctype.h>

using namespace std;

define N 8765432*1 //一共有8!种排列

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

Kylin14570 | 园豆:202 (菜鸟二级) | 2020-12-13 10:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册