帮我写一个c++的程序输入序列长度为n的序列,求序列中第一个最小值的位置和最后一个最小值的位置
时间: 2024-10-13 13:08:13 浏览: 22
你可以使用C++编写一个简单的程序来解决这个问题。这里提供一个基本的算法思路,首先遍历整个数组找到第一个最小值,然后从后向前遍历再次找到最后一个最小值。以下是代码示例:
```cpp
#include <iostream>
using namespace std;
int findFirstMin(int arr[], int n) {
int first_min = arr[0];
for (int i = 1; i < n; ++i) {
if (arr[i] < first_min)
first_min = arr[i];
}
return first_min == arr[0] ? 0 : first_min - 1;
}
int findLastMin(int arr[], int n) {
int last_min = arr[n - 1];
int last_index = n - 1;
for (int i = n - 2; i >= 0; --i) {
if (arr[i] <= last_min)
last_min = arr[i], last_index = i;
}
return last_index + 1; // 因为数组下标是从0开始的,所以返回的是第一个比last_min大的元素位置
}
int main() {
int n;
cout << "Enter the length of the sequence: ";
cin >> n;
int arr[n];
cout << "Enter the elements of the sequence: ";
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
int first_pos = findFirstMin(arr, n);
int last_pos = findLastMin(arr, n);
cout << "The position of the first minimum value is: " << first_pos << endl;
cout << "The position of the last minimum value is: " << last_pos << endl;
return 0;
}
```
在这个程序中,`findFirstMin`函数用于查找第一个最小值的位置,而`findLastMin`函数则从后往前查找最后一个最小值的位置。请注意,`findLastMin`函数假设输入数组至少有一个元素不大于当前最大值。
阅读全文