需要直接取(帅哥美女给个赞呗,求求了)
2026-08-03 09:16:50
发布于:浙江
12阅读
0回复
0点赞
这题我们首先要懂题目的要求,看懂之后就很好做了
我们用for循环来控制b,用while循环来完成二分,把每一个数都判断一遍,如果相等直接输出,小于则是在数组的右边,大于则是在数组的左边
好了话不多说,我们直接上代码(能看懂的都是人)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >>n;
int m;
cin >> m;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int b;
for (int i = 0; i < m; i++) {
cin >> b;
int l = 0, r = n-1;
int h = -1;
while (l <= r) {
int LZ = (l + r) / 2;
if (a[LZ] == b) {
h = LZ+1;
r = LZ - 1;
}
else if (a[LZ] > b) {
r = LZ - 1;
}
else {
l = LZ + 1;
}
}
cout << h << " ";
}
}
这里空空如也








有帮助,赞一个