Go 求最多物品的购买
func main(){
var price =[]int{1,22,65,45,7,3,2,1,5,6,9,7}
var valueIndexMap=make(map[int]*list.List)
for i:=0;i<len(price);i++ {
dataList:=valueIndexMap[(price[i])];
if(dataList==nil){
dataList = list.New();
valueIndexMap[price[i]]=dataList;
}
dataList.PushBack(i);
}
sort.Ints(price);
var maxPrice int =100;
var buyCnt int =0;
var buyIndex =list.New();
for i:=0;i<len(price);i++{
if(maxPrice<price[i]){
break;
}
buyCnt++;
maxPrice-=price[i];
buyIndex.PushBack(valueIndexMap[price[i]].Remove(valueIndexMap[price[i]].Front()));
}
fmt.Println("buyCnt=",buyCnt,";buyIndex=",buyIndex);
a:=buyIndex.Front()
for ;a!=nil;a=a.Next(){
fmt.Println(a.Value)
}
}
全部评论