#include
#include
#include
using namespace std;
template
bool _IsSubSequence(T a[], int n, T b[], int m) //定义包含关系函数
{
int i=0;
int j=0;
while (i < n)
{
if (a[i] == b[j]) /** 相等时,下标同时向后移动一个位置. /
{
i++,j++;
}
else
{
j++; /* 不等时,只将b[]数组下标向后移动一个位置. /
if (j == m) /* 当b[]数组找完时,指向了第m+1个不存在的元素,则不符合。 */
return false;
}
}
return true;
}
int main()
{
static char a1[11][7]={
{'a'},
{'b','c','e','f','g'},
{'e'},
{'a','b','c','e','f','g'},
{'b','c','e','g'},
{'c','e'},
{'b','c','f','g'},
{'b','f','g'},
{'b','g'},
{'b','c','g'},
{'a','b','c','e','g'}
};
for(int i=0;i<11;i++){
for(int j=0;j<7;j++)
{
if(i!=j&&_IsSubSequence(a1[i],10,a1[j],10))
{
for(int k=j+1;k<20;k++){
a1[k-1][0]=a1[k][0];
a1[k-1][1]=a1[k][1];
a1[k-1][2]=a1[k][2];
a1[k-1][3]=a1[k][3];
a1[k-1][4]=a1[k][4];
a1[k-1][5]=a1[k][5];
}
}
}
}
for(int i=0;i<10;i++)
{
for(int j=0;j<6;j++)
cout<<a1[i][j];
cout<<endl;
}
}
输出是空白的 是想找出最小子集最后输出
a
e
bg