}
void CExactCoverSolution::print(ostream&os ) const
{
os << m_solution[0];
for (int i=1;i
os << ","<
}
三、测试代码
[csharp]
#include
#include
#include
#include
using namespace std;
#include "ExactCoverSolution.h"
const int ELEMENT_NUM=7 ; //元素的个数
const int SUBSET_NUM=6; //子集的个数
const int U[ELEMENT_NUM]={1,2,3,4,5,6,7}; //全集
const char NAMES[SUBSET_NUM]={'A','B','C','D','E','F'}; //各子集的名字
//0-1矩阵
const int Matrix[SUBSET_NUM][ELEMENT_NUM]={
{1,0,0,1,0,0,1}
,{1,0,0,1,0,0,0}
,{0,0,0,1,1,0,0}
,{0,0,1,0,1,1,0}
,{0,1,1,0,0,1,1}
,{0,1,0,0,0,0,1}
};
int main(int argc,char* argv[])
{
vector
for (int i=0;i
FULL_SET values(U,U+ELEMENT_NUM);
SUBSET_NAMES names(NAMES,NAMES+SUBSET_NUM);
CExactCoverSolution s(M,names);
if (s.search())
s.print();
cout<
system("pause");
return 0;
}
#include
#include
#include
#include
using namespace std;
#include "ExactCoverSolution.h"
const int ELEMENT_NUM=7 ; //元素的个数
const int SUBSET_NUM=6; //子集的个数
const int U[ELEMENT_NUM]={1,2,3,4,5,6,7}; //全集
const char NAMES[SUBSET_NUM]={'A','B','C','D','E','F'}; //各子集的名字
//0-1矩阵
const int Matrix[SUBSET_NUM][ELEMENT_NUM]={
{1,0,0,1,0,0,1}
,{1,0,0,1,0,0,0}
,{0,0,0,1,1,0,0}
,{0,0,1,0,1,1,0}
,{0,1,1,0,0,1,1}
,{0,1,0,0,0,0,1}
};
int main(int argc,char* argv[])
{
vector
for (int i=0;i
FULL_SET values(U,U+ELEMENT_NUM);
SUBSET_NAMES names(NAMES,NAMES+SUBSET_NUM);
CExactCoverSolution s(M,names);
if (s.search())
s.print();
cout<
system("pause");
return 0;
}
四、运行结果