按从小到大的顺序输入n个整数,再输入一个给定的整数x,在这n个数中找两数之和等于x的数对(可能有多个),找到则输出这两个数,没找到输出“no”,请用C++给出代码示例,尽量减少库的使用
时间: 2024-05-01 07:16:04 浏览: 116
以下是使用C++实现的代码示例:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, x;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> x;
sort(a, a + n); // 排序
int i = 0, j = n - 1;
while (i < j) { // 双指针法
if (a[i] + a[j] == x) {
cout << a[i] << " " << a[j] << endl;
i++;
j--;
} else if (a[i] + a[j] < x) {
i++;
} else {
j--;
}
}
if (i == j) { // 没找到
cout << "no" << endl;
}
return 0;
}
```
该代码使用了双指针法,将数组排序后,使用两个指针分别指向数组的开头和结尾,若两个指针对应的元素之和等于给定的整数x,则输出这两个元素;若小于x,则将左指针右移;若大于x,则将右指针左移。如果最终左指针和右指针相遇,仍然没有找到符合条件的数对,则输出“no”。
阅读全文