#include<stdio.h> #include<stdlib.h> int cmp(const void* a, const void* b) { if (((int*)a)[1] == ((int*)b)[1]) return ((int*)a)[0] - ((int*)b)[0]; return ((int*)a)[1] - ((int*)b)[1]; } int main() { int n; int a[10000][2]; scanf_s("%d", &n); for (int i = 0; i < n; i++) { scanf_s("%d %d", &a[i][0], &a[i][1]); } qsort(a, n, 2 * sizeof(int), cmp); int j = 0, count = 1; for (int i = 1; i < n; i++) { if (a[i][0] > a[j][1]) { j = i; count++; } } printf("%d", count); return 0; }
时间: 2024-03-07 17:51:43 浏览: 13
这段代码是一个贪心算法,用于解决区间选点问题。给定n个闭区间,从中选出尽量少的点,使得每个区间内都至少有一个点。程序中使用qsort函数对区间按照右端点从小到大排序,然后从左到右依次扫描每个区间,如果当前区间的左端点大于前一个区间的右端点,则需要再选一个点来覆盖当前区间,计数器count加1。最后输出count即可。
相关问题
函数的功能是对参数p传送的首地址,n为元素个数的双精度型数组按降序排序。# include < stdio.h # include < stdlib.h > void Fun ( double * int );/ /原型声明void SaveRes ( void ) ; void fun ( double xp , int n )
这个程序定义了一个名为`fun()`的函数,用于对双精度型数组按降序排序,具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于降序排序
int cmp(const void *a, const void *b) {
const double *pa = (const double *)a;
const double *pb = (const double *)b;
if (*pa < *pb) {
return 1;
} else if (*pa > *pb) {
return -1;
} else {
return 0;
}
}
// 排序函数
void Fun(double *p, int n) {
qsort(p, n, sizeof(double), cmp);
}
// 存储结果函数
void SaveRes(void) {
// TODO: 存储结果的具体实现
}
int main() {
double arr[] = {3.14, 2.71, 1.618, 0.618, 1.414};
int n = sizeof(arr) / sizeof(double);
Fun(arr, n);
for (int i = 0; i < n; i++) {
printf("%.3f ", arr[i]);
}
printf("\n");
SaveRes();
return 0;
}
```
这个程序中的`fun()`函数与前面的程序类似,仍然是定义了一个比较函数`cmp()`,用于降序排序,然后调用`qsort()`函数对双精度型数组进行排序。最后用循环打印排序后的数组元素。
此外,程序中还定义了一个名为`SaveRes()`的函数,用于存储排序结果,具体实现待补充。
#include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b) { return (*(long *)b > *(long *)a) ? 1 : -1; } int main() { int i, k, n, m, cnt = 0, flag = 1; long x, s[10] = {0}; scanf("%d %d", &n, &m); int len = m < n ? m
这段代码是一个简单的用C语言实现的排序程序。程序首先读取输入的n和m,然后从输入中读取n个long类型的整数,并将它们存储在一个大小为10的long类型数组s中。接着,程序使用快速排序算法对s数组进行排序,按照从大到小的顺序排列。排序后,程序再输出排序后的前m个元素。
具体来说,程序定义了一个名为cmp的比较函数,该函数用于比较两个long类型的整数的大小。然后,程序使用qsort函数对s数组进行排序,其中第一个参数是数组的起始地址,第二个参数是数组的元素个数,第三个参数是每个元素的大小,第四个参数是一个指向比较函数的指针。
程序使用变量len来表示实际需要排序的元素个数。如果m小于n,则仅需要对前m个元素进行排序,否则需要对所有n个元素进行排序。最后,程序循环输出排序后的前m个元素,直到输出完毕为止。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)