Choosing coins with least or no change given

前端 未结 8 1377
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-07 04:00

I am making a game which consists of coin denominations of $10, $5, $3, and $1. The player may have 0 or more of each type of currency in his inventory with a maximum of 15 coin

8条回答
  •  清酒与你
    2021-02-07 04:26

    This is my solution i do not know how efficient is it but it works,i am open for suggestion.

    =0;$j--){
                $coin_count[$j]=0;
                $player[$j]=$player_copy[$j];
            }
            for($j=$z;$j>=0;$j--){
                while(($price>0) && 1<=$player[$j]){
                    $price-=$coin_value[$j];
                    $player[$j]--;
                    $coin_count[$j]++;
                }
            }
            $change[$k++]=$price;
             if($price!=0){
                    for($j=$z;$j>=0;$j--)
                        if($price_copy>$coin_value[$j]){
                            $z=$j-1;
                            $price=$price_copy;
                            goto label1;
                        }
                    $flag=1;
             }
        //find minimum change 
            $minv=$change[0];
    
             for($i=1;$change[$i]>=0 and $i<4;$i++)
                 if($change[$i]>$minv)
                    $minv=$change[$i];
             $i;
      //when you find minimum change find which coins you have used
             for($i=0;$i<4;$i++)
                 if($change[$i]==$minv && $flag==1){
                    $flag=2;
                    for($j=3;$j>=0;$j--){//reset coin_count and player budget
                        $coin_count[$j]=0;
                        $player[$j]=$player_copy[$j];
                    }
                     for($j=3-($i%2)-1;$j>=0;$j--){
                         while(($price>0) && 1<=$player[$j]){
                             $price-=$coin_value[$j];
                             $player[$j]--;
                             $coin_count[$j]++;
                         }
                      }
                  }
    //prints result
             for($j=0;$j<4;$j++)
                printf("%d x %d\n",$coin_count[$j],$coin_value[$j]);
             printf("change: %d\n",$minv);
    ?>
    

提交回复
热议问题