0
已采纳
汪恺恒
中级启示者
中级启示者
本题的主要思路是把输入的时间差求出,排序题目所用时间,从小开始选择,直到时间不够
首先求出时间差
之后对数组排序
for(int i=0;i<n;i++){
if(a[i]<=total){
ans++;
total-=a[i]; //根据贪心策略,从耗时少的开始做,直到没时间或者没题目为止
}
}
求时间差
int fun(int year1,int year2,int month1,int month2,int day1,int day2,int hours1,int hours2,int minute1,int minute2){
int countday1=0,countday2=0,sumday1=0,sumday2=0;
countday1=fun1(year1,month1); //求出因闰年而需要多加的天数
countday2=fun1(year2,month2);
for(int i=0;i<month1-1;i++){ //当前年份前几个月的天数
sumday1+=b[i];
}
for(int i=0;i<month2-1;i++){
sumday2+=b[i];
}
sumday1+=day1+countday1+365*year1; //求出相对于0年1月1日的总天数,本来月日要减一因为相互抵消所以不计
sumday2+=day2+countday2+365*year2;
return (sumday2*24*60+hours2*60+minute2-sumday1*24*60-hours1*60-minute1); //换算成分钟差返回
}
0