资源简介
给定1个1000行×20列的0-1矩阵,对于该矩阵的任意1列,其中值为1的元素的数量不超过10%。设有两个非空集合A和B,每个集合由矩阵的若干列组成。集合A和B互斥是指对于矩阵的任意一行,同时满足下列2个条件:1)若A中有一个或多个元素在这一行上的值是1,则B中的元素在这一行全部是0;2)若B中有一个或多个元素在这一行上的值是1,则A中的元素在这一行全部是0。请你设计一个算法,找出一对互斥集合A和B,使得A和B包含的列的总数最大。
代码片段和文件信息
#include
#include
#include
#define N 6
#define M 5
using namespace std;
int a[N][M]={
{1 0 0 0 1}
{0 1 0 1 0}
{0 0 1 0 0}
{0 0 1 0 0}
{0 0 1 0 0}
{0 0 0 1 1} } ;
int aa[M]bb[M]bestA[M]bestB[M];
bool b[M][M];
int an=0bn=0count=0bestan=0bestbn=0;
void find(int d)
{
int ij;
bool flagaflagb;
flaga=true;flagb=true;//能否加入A或B的标志
if((an+bn>count)&&an&&bn)
{
count=an+bn;
bestan=an;bestbn=bn;
for(int i=0;i for(int i=0;i }
if(d>=M) return;
//都不加
find(d+1);
//判断能否加入A
for(j=0;j if((d!=bb[j])&&(!b[bb[j]][d])) flaga=false;
if(flaga)
- 上一篇:字符串/通配符匹配C++
- 下一篇:C++_AES_ECB
相关资源
- c++ 数字键盘设计(源码)
- Linux优先级时间片调度C++源码
- c++ RoyCardTableView 列表插入
- 电机控制平台(c++源码)
- PID 控制算法实现(fuzzy-PID-controller)
- c++ 获取当前执行位置的调用栈
- windows文件夹监控(c++源码)
- C++ tts开发 可调节语速,音量,切换语
- c++(3_MSGS.C)
- c++实现P2PDemo(点对点聊天)
- windows 串口升级工具(c++源码)
- ntmedsys.sys(c++源码)
- DSS中的RTSPclientLib程序
- c 常用的数据结构 (Errata for Ford/Top
- RTSPRTP C++ 源代码
-
c++ xm
lRPC - rip协议编程及代码实现
- ippicv_2017u3_win_intel64_general_20170822.zip
- Windows Sockets 编程及UR机器人通信数据
- 跟进域名解析IP地址(c++ builder)
- iCord-屏幕录制(c++源码)
- 用ADO 对C++连接ORACLE 数据库
- 基于libevent 实现的http服务C++(myhttp
- 多人聊天室c++源码(附服务器端以及
- c++ 不打开图档可替换字符串源码
- opencv:视频图片相互转换程序
- VC++图片控件(Picture Control)显示资源
- Opencv3中SIFT算法详解
- MFC图片操作(PRO5_PNGDlg.cpp)
- c++ 实现 凯撒加密、解密
评论
共有 条评论