题解
2023-10-06 18:31:06
发布于:上海
37阅读
0回复
0点赞
思路:因为三层循环肯定TLE,所以采用二层循环优化
首先记录每个数出现的次数,再通过剩下的两个数一一比对,具体过程看代码
#include<iostream>
using namespace std;
int num[305];//存储每个数出现的次数
int main(){
int n,sum;
long long cnt=0;//不写long long见祖宗啊
cin>>n>>sum;
int a[n];
for(int i=0;i<=n-1;i++){
cin>>a[i];
num[a[i]]++;//这个数出现的次数要加1
}
for(int i=0;i<=n-1;i++){
for(int j=0;j<=n-1;j++){
int mic=sum-a[i]-a[j];
if(mic>0) cnt+=num[mic];//判断有没有第三个数
}
}
cout<<cnt;
}
这里空空如也
有帮助,赞一个