题目描述
有n个整数,编号1到n,判断能否找到两个不同编号的数总和为m。
如果可以找到,则输出Yes。若找不到则输出No。
注意:需要找的是两个不同编号的数。
输入输出格式
输入格式
输入的第一行为n和m两个整数,第二行为n个数字。
其中n<=100,数字绝对值不超过100000。
输出格式
Yes或者No
输入输出样例
输入样例1
4 15
1 5 3 10
1
2
输出样例1
Yes
1
输入样例2
3 5
1 2 5
1
2
输出样例2
No
1
题解
水题~
直接穷举,就能轻松AC,你不按我的代码优化也行,毕竟也没优化多少,最劣复杂度O(n^2),平均复杂度O(nlogn)
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a[109];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)if(i!=j&&a[i]+a[j]==m){printf("Yes");return 0;}
printf("No");
return 0;
}