上原题
一看题目,我们就可以知道,要想优化程序,就要先给容器内的元素排序(虽然此题数据很小),再加上题目中提到“集合”,我们就想到了STL里的set,因为set可以去重+排序,其实本人感觉不然,尤其是对于新手,题目已经告诉我们不存在重复元素,那我们就可以直接用数组模拟,加个sort排序即可(此处的麻烦是指后面的调用,查找麻烦,需要用到iterator迭代)
因为此题的数据范围很小,我们直接O(n^2)暴力枚举即可
上代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,cnt=0,A[105],vis[105];
//vis为状态数组,1表示已被用过,0相反
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>A[i];
}
sort(A+1,A+n+1);
for(int i=1;i<=n-2;i++)
{
for(int j=i+1;j<=n-1;j++)
{
if(A[i]+A[j]>A[n])
{
break;
}
//小优化,由于A数组有序,如果A[i]+A