淘淘摘苹果(升级版)
今天在洛谷上面做了很久的题
下面的代码加注释
#include <stdio.h>
#include <string.h>
//void paixu(int arr[], int brr[], int len) {
//
//
//}
int main() {
int n, s;
int a, b;
scanf("%d %d", &n, &s);//搜集苹果数n,以及力气s
scanf("%d %d", &a, &b);//搜集椅子高度,和淘淘可以够到的最大值
int arr[n];//定义一个数组记录摘每个苹果的力气;
int brr[n];//用来记录苹果离地的高度
int len;
len = n;//记录数组的长度
int count = 0;//用来记录每个可以摘到的苹果数
for (int i = 0; i < n; i++) {
scanf("%d %d", &brr[i], &arr[i]);
}//循环n次用来收集苹果高度和需要的力气
/*
下面是选择排序,因为我是废物,只能写出选择排序;
*/
int temp;
int temp1;
int a1;
for (a1 = len - 1; a1 > 0; a1--) {//前面的a定义过了。所以这里用a1.
int maxid = 0;//定义一开始的maxid为0
for (int i = 0; i <= a1; i++) {
if (arr[maxid] < arr[i]) {
maxid = i;
}//找出最大值,然后数组向前移动一位
}
temp = arr[a1];
temp1 = brr[a1];
arr[a1] = arr[maxid];
brr[a1] = brr[maxid];
arr[maxid] = temp;
brr[maxid] = temp1;//用力气的大小来排序,同时让苹果离地高度与其一一对应
//不会用结构体所以用两个数组
}
// for (int i = 0; i < n; i++) {
// printf("%d ", arr[i]);
// }
// printf("\n");
// for (int i = 0; i < n; i++) {
// printf("%d ", brr[i]);
// }
for(int i=0;i<n;i++){
if(a+b>=brr[i]&&s>=arr[i]){//同时满足力气够和够得着
s=s-arr[i];//花费力气
count++;//苹果数加1
}
}
// int arr[] = {1,7,1,38,2,4,8734};
// int len;
// len=sizeof(arr)/sizeof(arr[0]);
// paixu(arr,len);
//
// for (int i = 0; i <= len - 1; i++) {
// printf("%d ", arr[i]);
// }
//
printf("%d",count);//打印苹果数
return 0;
}
标签:arr,int,brr,len,a1,淘淘,苹果,升级版
From: https://www.cnblogs.com/harper886/p/17359998.html