假设五个人工资1053,2014,3038,9154,6814
人民币面值100,50,20,10,1
问取多少张100的多少张50的多少张1元的使每个人都能顺利领到钱,且取钱的总张数最少。

解决方案 »

  1.   

    每个人的都最少,总数也就最少了  是对的
      具体这样写算法(N:=发的钱):
       1:  div(整除) 100  (就是100的整数) 当然是发100的票票
         mod (取余)100 的数字判断> 50   发50 票一张
         余下的N,n:=(N  div 10) >4  的 发20票两张  n>2 发20票一张
          ……
       2:n:=N div 50   根据n判断。  50 也可以是10 ,也可以是20 。
         写个函数吧。思路就是这样的,我是这样想的,可能还有更好的算法。
      

  2.   

    var a,b,c,d,e,f,g,h,w:integer;
    begin
         w:=strtoint(inputbox('工资金额','请输入工资金额',''));
         a:=w div 100;
         b:=w mod 100;
         c:=b div 50;
         d:=b mod 50;
         e:=d div 20;
         f:=d mod 20;
         g:=f div 10;
         h:=f mod 10;
          showmessage('100元'+inttostr(a)+'张'+'50元'+inttostr(c)+'张'+'20元'+inttostr(e)+'张'+'10元'+inttostr(g)+'张'+'1元'+inttostr(h)+'张');
    end;
    我是这样写的,大大们给我指点指点。初学delphi,呵呵。
      

  3.   

    zahahui(zahahui) 请问您,还可以怎么写呢,能写出来给我看吗?多谢了。