Go 求最多物品的购买

2021-07-04 14:12
270
0
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)
   }
}

全部评论