用c语言写一段代码,给定长度为n的整数数组,有n条垂线,找出两条线是它们与x轴构成的容器面积最大
时间: 2023-03-30 19:03:28 浏览: 58
以下是代码实现:
```c
int maxArea(int* height, int heightSize){
int left = , right = heightSize - 1;
int maxArea = ;
while (left < right) {
int area = (right - left) * fmin(height[left], height[right]);
maxArea = fmax(maxArea, area);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return maxArea;
}
```
这段代码使用双指针法,从数组两端开始向中间移动,每次计算当前两条垂线构成的容器面积,并更新最大面积。移动指针时,选择高度较小的一侧进行移动,因为高度较小的一侧决定了容器的高度,移动高度较大的一侧不会使容器的面积增大。
相关问题
给定n个整数,问这些数中有多少对整数,它们的值正好相差1,用c语言写出代码
以下是C语言的代码实现:
```c
#include <stdio.h>
#define MAXN 100
int main() {
int n, a[MAXN];
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int cnt = 0;
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
if(a[i] - a[j] == 1 || a[j] - a[i] == 1) {
cnt++;
}
}
}
printf("%d\n", cnt);
return 0;
}
```
解释:首先读入n个整数,存储到数组a中,然后用两个循环遍历所有的数对,统计数值差为1的数对个数。最终输出这个个数即可。
用c语言写一段代码实现将给定的n个整数从大到小排序后输出。
以下是使用冒泡排序法实现的代码:
```
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] < arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 8, 3, 6, 2, 7};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array in descending order: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:Sorted array in descending order: 8 7 6 5 3 2