组合:从 n 个不同元素中,任取 m 个元素并成一组,叫做从 n 个不同元素中取出 m 个元素的一个组合;
1、组合(不放回):对数组 a 中 n 个数不放回任取 3 次的组合
sort(a+0, a+n); // 可先对数组排序;如果是从大到小排序: sort(a+0,a+n, greater<int>());
for(inti=0; i<=n-1; i++) // 枚举下标
for(intj=i+1;j<=n-1; j++)
for(intk=j+1; k<=n-1; k++)
2、组合(可放回):对数组 a 中 n 个数可放回任取 3 次的组合
sort(a+0, a+n); // 可先对数组排序
for(inti=0; i<=n-1; i++) // 枚举下标
for(intj=i;j<=n-1; j++)
for(intk=j; k<=n-1; k++)
另附:质数判断函数,返回结果1表示是质数,0表示不是质数
int f(int x) {
if (x <= 1)
return 0;
for (int i = 2; i <= sqrt(x); i++)
if (x % i == 0)
return 0;
return 1;
}