c++:数组元素的最大值 分数 10 作者 chanel 单位 中国地质大学(北京) 编写函数getMax,传入数组起始地址及数组元素个数,返回该数组的最大 值, 函数接口定义: int getMax(int *pa, int size); 其中 pa 是用户传入的数组的首地址,size是数组元素的个数。 裁判测试程序样例: #include <iostream> using namespace std; int getMax(int *pa, int size); int main() { int *a, n; cin>>n; a=new int[n]; for(int i=0;i<n;i++) cin>>a[i]; int max=getMax(a,n); delete []a; cout<<"max="<<max; return 0; } /* 请在这里填写答案 */ 输入格式: 第一行元素个数n。 第二行输入那个数组元素。 输出格式: 输出n个元素的最大值。 输入样例1: 6 1 3 89 -3 23 0 输出样例1: max=89
时间: 2024-01-02 13:03:45 浏览: 163
C++代码如下:
```c++
#include <iostream>
using namespace std;
int getMax(int *pa, int size) {
int maxNum = pa[0]; // 假设第一个元素是最大值
for (int i = 1; i < size; i++) {
if (pa[i] > maxNum) {
maxNum = pa[i];
}
}
return maxNum;
}
int main() {
int *a, n;
cin >> n;
a = new int[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int max = getMax(a, n);
delete[] a;
cout << "max=" << max;
return 0;
}
```
思路解析:
定义一个变量 `maxNum` 存储当前的最大值,初始值为数组第一个元素。然后遍历整个数组,如果有比 `maxNum` 更大的元素,就将 `maxNum` 更新为该元素。最后返回 `maxNum` 即可。
注意要使用动态分配内存 `new` 和 `delete`,避免数组长度过长导致栈溢出。
相关问题
分治法 用分治法求数组最大数。 输入说明: 数组元素个数 数组各元素 输入说明: 数组最大数 输入示例: 10 2 3 5 6 1 9 20 11 17 4 输出示例: 20 c语言
#include <stdio.h>
int getMax(int arr[], int left, int right) {
if (left == right) { // 数组只有一个元素,直接返回该元素
return arr[left];
}
int mid = (left + right) / 2; // 分治点
int leftMax = getMax(arr, left, mid); // 递归求左半部分的最大值
int rightMax = getMax(arr, mid + 1, right); // 递归求右半部分的最大值
return leftMax > rightMax ? leftMax : rightMax; // 返回左右子问题的最大值
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int max = getMax(arr, 0, n - 1);
printf("%d\n", max);
return 0;
}
定义重载方法getMax(),要求如下: 返回元素是int类型的一维数组的最大值; 返回元素是doule类型的二维数组的最大值; 返回元素是float类型的Vector中的最大值; 返回元素是String类型的二维数组的最大字符串
在Java中,为了实现这个需求,你可以定义一个包含泛型的方法,因为Java支持方法的重载(Overloading)。这样可以处理不同数据类型的数组和集合。以下是四个`getMax()`方法的示例:
1. 对于整数一维数组:
```java
public int getMax(int[] arr) {
if (arr != null && arr.length > 0) {
return Arrays.stream(arr).max().orElse(Integer.MIN_VALUE);
}
throw new IllegalArgumentException("Array must not be empty or null");
}
```
2. 对于双精度浮点型二维数组:
```java
public double getMax(double[][] arr) {
if (arr != null && arr.length > 0) {
return Arrays.stream(arr).flatMapToDouble(Arrays::stream)
.max().orElse(Double.NEGATIVE_INFINITY);
}
throw new IllegalArgumentException("Array must not be empty or null");
}
```
3. 对于单精度浮点型的Vector:
```java
import java.util.ArrayList;
import java.util.List;
public float getMax(Vector<Float> vector) {
if (vector != null && !vector.isEmpty()) {
return Collections.max(vector.elements(), Float::compareTo);
}
throw new IllegalArgumentException("Vector must not be empty or null");
}
// Vector类假设已经存在,例如来自Apache Commons Lang库
class Vector<T extends Comparable<T>> {
private List<T> elements;
// ...其他方法...
}
```
4. 对于字符串二维数组:
```java
public String getMax(String[][] strArr) {
if (strArr != null && strArr.length > 0) {
return Arrays.stream(strArr)
.mapToInt(row -> row.length > 0 ? row[0].length() : 0)
.max().orElse(0)
+ " character string";
}
throw new IllegalArgumentException("Array must not be empty or null");
}
```
阅读全文