题目大意:给出工厂需要的牛奶总数,给定几个农场,有标价和容量,输出最少花费
1.4看TEXT描述就是贪心了,这道题应该比较简单,就是先排序,然后从小到大给工厂输送,每次记一下花费,最后输出就好
Note:供永远大于需;
用这道题复习下排序:
桶排:直接放在对应自己数字名字的数组中;
选择:每次找一个数放在最后,可以理解为,找第一小的,找第二小的,以此类推,注意循环的次数,大循环是1~n-1,因为最后一个数在排时其他数字已经排好,所以不用排,小循环1~n-i,因为前i个已经被放在自己的位置不用再动,时间复杂度为n的平方;
快排:找定一个基准数(习惯选择最左的数),然后两端指针向中间靠拢,一个找大于一个找小于,找到后交换,利用递归不断处理左右,最终条件啊哈算法上写的左起点大于右起点,但我觉得等于就好,手推了一边感觉问题不大,等下程序试下;
堆排:放在后面复习
伪代:
输入数据
以价格为基础排序 //在这里注意到了价格区间是0~1000,所以感觉桶排更快
for(i=0~1000)
{
if(sup[i]!=0&&acq!=0)
{
if(sup[i]<acq)
{
acq=acq-sup[i];
sum=sup[i]*i+sum;
}
else
{
sum=scq*i+sum;
break;//我猜程序应该每次进行到这里就结束了
}
}
输出sum
}
注:这里在输出之前没有考虑到为0的情况,之前是在else下面直接输出了,结果在碰到为0时就没有输出,把输出放在外面过了,还是要考虑周全。