思路
算是一种暴力算法,时间复杂度为(3 ^ t )。
有t个数,不知道取哪几个,那么可以采用二进制枚举,用二进制代表每个数从0 0 0 0 0 开始遍历到1 1 1 1 1(t=5),当二进制数为1时取该位对应的数,每种情况都计算下看是否有某一种情况符合题目要求。
代码:
for(ll i=0; i<(1<<t); i++)//从0~2^t-1个状态
{
ll s=0;
for(ll j=0; j<t; j++)//遍历二进制的每一位
{
if(i&(1<<j))//判断二进制第j位是否存在
{
a[i][s++]=j;//如果存在保存第j个元素
}
}
}
参考题目