我们给了我们两个储物柜,分别是L1和L2,它们有一些硬币形式的钱。L1中有A个硬币,L2中有B个硬币。我们必须从储物柜中取出钱或硬币,以使取出的钱最大。每次从任何储物柜中取出硬币时,都会用比以前少1的硬币来代替。如果从L1提取A硬币,则将其替换为A-1硬币;如果从L2提取B硬币,则其将替换为B-1硬币。任务是分两步使提取的金额最大化。这意味着硬币只能被提取两次。
输入-L1-10,L2-11
输出-可以分两步提取的最大金额-21
说明-在步骤1中,我们从L2提取11硬币,L2将被11-1 = 10个硬币替代。
在步骤2中,L1和L2都有10个硬币,因此可以从任何一个中提取,我们有11 + 10 = 21最大硬币。
输入-L1-5,L2-5
输出-可以分两步提取的最大金额-10
说明-在步骤1中,我们从L1提取5个硬币,L1将被5-1 = 4个硬币替换。
在步骤2中,L1拥有4个硬币,L2拥有5个硬币,因此我们从L2取得5个硬币,并且我们有5 + 5 = 10个最大硬币。
我们有两个带有一些硬币的储物柜L1和L2,它们是整数。
函数maxMoney(int A,int B)将储物柜中的硬币数量作为输入。
在内部,maxMoney()
我们使用变量“ money”来存储最大金额。
最初,金钱从A或B中取更大的值。(金钱= A> B?A:B)
将货币值与A或B进行比较,以检查提取了哪个集装箱的硬币。
现在,用比以前少一个的容器替换该容器。(A--或B--)
同样,金钱会增加A或B中的值,以较高者为准。(金钱+ = A> B?A:B)
如果k较小,则最小的k个元素的总和最小-
在D1中存储abs((整个数组的总和)-(2 *至少k个元素的总和))。两次是因为数组和也具有这些元素。
如果k较大,则最大的k个元素的总和最高-
在D2中存储abs((整个数组的总和)-(2 *最高k个元素的总和))。两次是因为数组和也具有这些元素。
比较D1与D2并将最大值存储在maxD中。
返回maxD作为结果。
Code: #include <stdio.h> #include <math.h> //函数返回我们可以得到的最大硬币 int maxMoney(int A, int B){ //拿硬币 int money=A>B?A:B; //向储物柜中再装入1枚硬币 if(money==A) A--; else B--; //再次退出 money+=A>B?A:B; return money; } //驱动程式码 int main(){ int L1 = 8, L2 = 9; printf("Maximum money that can be withdrawn in two steps: %d" , maxMoney(L1, L2)); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Maximum money that can be withdrawn in two steps: 17