现有i张10元纸币java_php面试题: 现有i张十元纸币,k张五元纸币,j张两元纸币,购物后要支付n元(i,j,k,n 为整数)。要求编写一个复杂度为O(1)的函数FindSolution(i,j...

今天面试遇,到如下面试题,当时手写代码很不方便,这道题没解清楚,于是回来重新整理下。

php面试题:

现有i张十元纸币,k张五元纸币,j张两元纸币,购物后要支付n元(i,j,k,n 为整数)。要求编写一个复杂度为O(1)的函数Changes(i,j,k, n),功能是计算出能否用现在手上拥有的纸币是否足够并能刚好拼凑齐n元,而不需要找零。

1、 如果可以,在屏幕输出一个方案并结束: (例子:“需要2张十元纸币,1张五元纸币,张两元纸币,刚好可凑齐27元”)

2、 如果不可以,在屏幕输出“不能刚好凑齐 n元”。

//因为时间和手写的关系,只需要求最优解

function FindSolution($n){

$ten = $five = $two = 0;

$tmp1 = $n%10;

if($tmp1 == 0){

//10的整数倍

$ten = $n/10;

}else{

$ten = ($n - $tmp1)/10;

//大于10

if($ten > 0){

//如果余数小于5,2、4可以被2整除,1、3需要向10借1

if($tmp1 < 5){

$tmp2 = $tmp1%2;

if($tmp2 == 0){

//余数为2、4

$five = 0;

$two =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值