請教大家一個問題, 具體是問題是這樣的,
1、有1000塊錢,A B C 3個人分最多可獲得的比例 是30% 40% 30%
2、如果A和B兩個人分 A 30% B 70%
3、如果B和C兩個人分 B 40% C 70%
4、若果只有一個人分 A 最多可以分30%
B最多可以分40%
C最多可以分70%
回複討論(解決方案)
希望可以用物件導向的思想來實現
這是什麼怪帳?
請說清楚點
我的理解....你說最多可分得,說明錢是可以剩餘的(若不可剩餘,30% 40% 30%這個分配就不對)
$member=array('a','b','c');//$member=array('a','b');//$member=array('b','c');//$member=array('b');$res = allotment(1000,$member);echo "";print_r($res);echo "
";function allotment($money,$member){$ms = array('a','b','c');$abc = array('a' => 30,'b' => 40,'c' => 30,);$ab = array('a' => 30,'b' => 70,);$bc = array(//B 40% C 70% 一共就 110%了,所以c 改為 60%'b' => 40,'c' => 60,);$one = array('a' => 30,'b' => 40,'c' => 70,);$same = array_intersect($ms,$member);sort($same);$res=array();if(count($same)==1){$data[$same[0]] = $one[$same[0]];}else{$plan = join('',$same);$data = $$plan;}$used = 0;foreach($data as $k=>$v){$rate = rand(1,$v);$res[$k]['rate']=$rate.'%';//百分比$res[$k]['mon']=$money * ($rate / 100);$used += $res[$k]['mon'];}$res['r'] = $money - $used;//剩餘錢return $res;}
3、如果B和C兩個人分 B 40% C 70% 這個應該是 B 40% C 60%吧
0 && $b>0 && $c>0){return array('a'=>$amount*0.3, 'b'=>$amount*0.4, 'c'=>$amount*0.3);}if($a>0 && $b>0 ){return array('a'=>$amount*0.3, 'b'=>$amount*0.7, 'c'=>0);}if($b>0 && $c>0){return array('a'=>0, 'b'=>$amount*0.4, 'c'=>$amount*0.6);}if($a>0){return array('a'=>$amount*0.3, 'b'=>0, 'c'=>0);}if($b>0){return array('a'=>0, 'b'=>$amount*0.4, 'c'=>0);}if($c>0){return array('a'=>0, 'b'=>0, 'c'=>$amount*0.7);}}?>
Array
(
[a] => 300
[b] => 400
[c] => 300
)
Array
(
[a] => 300
[b] => 700
[c] => 0
)
Array
(
[a] => 0
[b] => 400
[c] => 600
)
Array
(
[a] => 300
[b] => 0
[c] => 0
)
Array
(
[a] => 0
[b] => 400
[c] => 0
)
Array
(
[a] => 0
[b] => 0
[c] => 700
)
這是什麼怪帳?
請說清楚點
不好意思啊,可能是我描敘的不太清楚,是這樣的:
有1000塊錢,A B C 3個人分最多可獲得的比例 是A30% B70% C100%
1、如果A,B,C3個人分,A分了30% 那麼B只能分70%-30% C只能分100%-(70%-30%)
2、如果B,C兩個人分, B可以分70% C分100%-70%
3,、依次類推 A,C 分,A,B分,,,,,,
幹掉A和B,C拿走跑路
這個意思?
function foo($u, $m=1000) { if(! is_array($u)) $u = array($u); echo join(',', $u), PHP_EOL; $d = array('A' => 0.3, 'B' => 0.4, 'C' => 0.3); foreach($u as $k) { $r[$k] = $d[$k] * $m; unset($d[$k]); } if(count($u) == 1 || count($d) == 0) return $r; foreach($d as $v) $r[$k] += $v * $m; return $r;}print_r(foo(array('A', 'B', 'C')));print_r(foo(array('A', 'B')));print_r(foo(array('A', 'C')));print_r(foo(array('B', 'C')));print_r(foo(array('B')));print_r(foo('C'));
A,B,CArray( [A] => 300 [B] => 400 [C] => 300)A,BArray( [A] => 300 [B] => 700)A,CArray( [A] => 300 [C] => 700)B,CArray( [B] => 400 [C] => 600)BArray( [B] => 400)CArray( [C] => 300)