两数之和c++(中等)

img
404 错误(无法找到页面)- 计蒜客 https://nanti.jisuanke.com/t/T3110%E7%9C%8B%E8%A7%81%E8%BF%99%E9%A2%98%E6%B2%A1%E5%95%A5%E6%80%9D%E8%B7%AF%EF%BC%8C%E6%98%AF%E8%A6%81%E9%81%8D%E5%8E%86%E5%90%97%EF%BC%9B
不要去网上复制代码,但可以给我看看别人的文章;
给思路加程序优先采纳

二分法(已修正):每一局对所有数排序以后枚举第一个数,二分查找是不是有满足条件的第二个数即可,这里可以直接使用binary_search。
#include<bits/stdc++.h>
using namespace std;
int n,m,a[10001],ans;
int main()
{
    cin>>n>>m;
    for(int j=1;j<=n;++j)
    {
        for(int i=1;i<=n;++i)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    if(binary_search(a+i+1,a+n+1,m-a[i]))
    {
        ans++;
        break;
    }
    }
    cout<<ans;
    return 0;
 }

每一局对所有数排序以后枚举第一个数,二分查找是不是有满足条件的第二个数即可,这里可以直接使用binary_search。

这种题么肯定binary——search啊


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[1005],n,x,cnt=0;
    cin>>n>>x;
    for(int i=0;i<n;i++)
    {
     for(int j=0;j<n;j++)
     {
      cin>>a[j];
     }
    sort(a,a+n);  
    for(int j=0;j<n;j++){
     if(binary_search(a+j+1,a+n,x-a[j])){
        cnt++;
        break;
      }
     }
    }
    
    cout<<cnt<<endl;
    return 0;
} 

哈哈哈哈我好了