思路 算是一种暴力算法,时间复杂度为(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个元素 } } } 参考题目