A3067.和为给定数 枚举题解
2026-03-31 17:52:26
发布于:浙江
6阅读
0回复
0点赞
只会枚举的me写的题解:
#include<bits/stdc++.h>//导入万能头
using namespace std;
int main(){//定义主函数main()
long long n,m,a[100000],u;//用long long类型,防止越界
cin>>n;//输入给n
for(int i=0;i<n;i++){//输入给a数组
cin>>a[i];
}
sort(a,a+n);//进行从小到大的排序
cin>>m;
for(int i=0;i<n;i++){//遍历数组每一个项
if(a[i]+a[n-1]<m){continue;}//因为最大的a[n-1]加上a[i]都不超过目标m,所以直接i+1就行了
for(int j=i+1;j<n;j++){//从i+1项开始遍历数组,因为前i项的组合试过了
if(a[i]+a[j]==m){
cout<<min(a[i],a[j])<<' '<<max(a[i],a[j]);//保证输出的前一个数比后一个数小
return 0;//直接结束函数,因为完成输出要求了
}
}
}
cout<<"No";//如果检测完了还没有一对数相加得到目标m,那么输出"No"就行了
return 0;//结束函数
}
如果n太大可能就过不了了 , 所以建议借鉴 , 不建议抄 , 谢谢!
这里空空如也




有帮助,赞一个