排列组合分配8人桌男女座位
来源:互联网 发布:金泰妍郑秀妍关系知乎 编辑:程序博客网 时间:2024/04/30 08:01
#include <opencv2/opencv.hpp>
#define _USE_MATH_DEFINES
#include <math.h>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespacecv;
using namespacestd;
//座位旁边至少一位异性
int IsNearToZero(int data[],int nNum);
//整个分配至少有两位对面是异性
int IsTwoDuiCheng(int data[],int nNum);
//一个左侧和对面为异性,右侧为同性
int IsRightOtherDui(int data[],int nNum);
//一个男性在女性中间
int IsInTheMid(int data[],int nNum);
int main( int argc,char**)
{
int myints[] = {1,1,1,1,-1,-1,-1,-1};
sort (myints,myints+8);
int nCount =0;
do {
// cout << myints[0] << ' ' << myints[1] << ' ' << myints[2] << ' '<< myints[3]<< ' '<< myints[4]<< ' '<< myints[5]<< ' '<< myints[6]<< ' '<< myints[7]<<'\n';
if (IsNearToZero(myints,8)==0 ||IsTwoDuiCheng(myints,8)==0)continue;
if (IsRightOtherDui(myints,8)==0 ||IsInTheMid(myints,8)==0)continue;
for (int i=0;i<8;i++)
{
if (myints[i]==1)cout << "A ";
if (myints[i]==-1)cout << "B ";
}
cout <<endl;
nCount++;
} while ( next_permutation(myints,myints+8) ); ///获取下一个较大字典序排列
cout <<"After loop: " << nCount <<'\n';
return0;
}
//至少两个对称异性
int IsTwoDuiCheng(int data[],int nNum)
{
int m_nCount =0;
int nIndex = nNum/2;
for(int i=0;i<nNum/2;i++)
{
if ((data[i]+data[i+nIndex])==0)
{
m_nCount++;
}
}
if (m_nCount<2)return 0;
return1;
}
//左右至少一个异性
int IsNearToZero(int data[],int nNum)
{
int m_nCount =0;
for(int i=0;i<nNum-1;i++)
{
int nIndex = i-1;
if(nIndex<0) nIndex =nNum-1;
if ((data[i]+data[nIndex])!=0&&(data[i]+data[i+1])!=0)
{
return0;
}
}
return1;
}
//一个左侧和对面为异性,右侧为同性
int IsRightOtherDui(int data[],int nNum)
{
int nAIndex = nNum/2;
for(int i=0;i<nNum/2;i++)
{
int nIndex = i-1;
if(nIndex<0) nIndex =nNum-1;
if ((data[i]+data[nIndex])==0&&(data[i]+data[i+1])==2 &&(data[i]+data[i+nAIndex])==0)
{
return1;
}
}
return0;
}
//一个男性在女性中间
int IsInTheMid(int data[],int nNum)
{
for(int i=0;i<nNum;i++)
{
int nIndex = i-1;
if(nIndex<0) nIndex =nNum-1;
if (data[i]==1 &&data[nIndex]==-1 &&data[i+1]==-1)
{
return1;
}
}
return0;
}
- 排列组合分配8人桌男女座位
- 随机分配座位以及8皇后问题
- 自动分配座位
- 1193_分配座位问题
- C语言版随机分配座位问题
- 座位
- 男女
- 随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
- 随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
- CCF火车票座位分配C++源码(非100)
- java代码实现年会座位的随机分配
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- Android游戏开发之绘画旋转的物体(Matrix类的逻辑异常)
- 数据结构系列(一)
- 洛谷1387最大正方形
- 要素图层范围查询属性
- java设计模式之建造者模式
- 排列组合分配8人桌男女座位
- quartz2.2.0+入门案例,理解quartz
- Nodejs 搭建https服务器(一)
- MySQL事务处理及索引
- 算法作业_17(2017.4.24第十周)
- QT5.7 登录 QSqlTableModel例子
- Java 关键字final
- Math.Round
- Testng监听器listener-ReportNg