水獭并非按顺序排列,再仔细读题
时间: 2024-12-17 17:20:41 浏览: 2
水獭
抱歉,确实误解了题目。既然水獭的高度并不是按照升序排列,那么就不能直接使用二分查找。在这种情况下,我们需要遍历整个数组来查找满足每个查询高度的第一个水獭。对于每个查询,从数组的第一个元素开始,逐个检查直到找到第一个大于或等于目标高度的水獭,或者遍历完数组。以下是针对非有序数组的解决方案:
```c
#include <stdio.h>
int findFirstTurtle(int *arr, int n, int target) {
for (int i = 0; i < n; ++i) {
if (arr[i] >= target) {
return i + 1; // 返回找到的第一个大于等于目标的水獭索引,注意加1是因为数组下标从1开始
}
}
return -1; // 如果没有找到满足条件的水獭,返回-1
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
int* arr = malloc(n * sizeof(int));
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
for (int q = 0; q < m; ++q) {
int height;
scanf("%d", &height);
int result = findFirstTurtle(arr, n, height);
printf("%d\n", result);
}
free(arr);
return 0;
}
```
在这个版本中,我们使用了一个简单的线性查找算法。对于每个查询,我们会依次检查每一个水獭的高度,直到找到符合条件的。
阅读全文