题目类型:数组
题目来源
思路:先将数组排序,对于一个数就在其左边进行查找是否有两个数相加等于次数,用左右逼近的方法去找。
代码
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int arr[105];
int total = 0;
void fun(int cur);
int main(){
cin>>N;
for(int i = 0;i<N;i++){
cin>>arr[i];
}
sort(arr,arr+N);
for(int i = 2;i<N;i++){
fun(i);
}
cout<<total;
return 0;
}
void fun(int cur){
int L = 0,R = cur-1;
while(L<R){
if(arr[L]+arr[R] < arr[cur]){
L++;
}else if(arr[L]+arr[R] > arr[cur]){
R--;
} else{
total++;
return ;//选好组后直接结束
}
}
}