题目描述:
题目解读:
李华想边吃饭边看B站,还想在要求时间内,观看最有价值的视频。
而且切换视频,中间还要花费1单位的时间。
输入:给定视频数量和最大观看时间。每个视频的时长和价值。
输出:符合时间要求的最有价值的视频的序号。
解题思路:视频数量和最大观看时间用变量存储即可。
然后要两次for循环,将 视频时长和价值,存入两个数组。
解题用for循环遍历,首先考察是否符合时间要求,符合则进一步考察是否价值最大。
(关于切换视频耗费的时间,只需要在考察时间要求时一并算入即可。即time[i]+i才是看视频i所需要的时间成本。)
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAX 10000
void Solve() {
int n,limit;
scanf("%d%d",&n,&limit);
int time[MAX];
int value[MAX];
int i = 0;
int answer = -1; //默认为-1
for (i = 0; i < n; i++) { //存储时间
scanf("%d", &time[i]);
}
for (i = 0; i < n; i++) { //存储价值
scanf("%d", &value[i]);
}
for (i = 0; i < n; i++) {
if (time[i] + i <= limit) { //考虑时间问题
if (answer == -1 || (value[i] > value[answer - 1])) //考虑价值
answer = i + 1;
}
}
printf("%d\n", answer);
return;
}
int main() {
int t;
scanf("%d", &t);
while (t--) Solve();
return 0;
}
遇到的错误: