问题大概是这样:Alice 和 Bob都喜欢吃巧克力棒,而且吃巧克力的速度一样,现在把不同长度的巧克力棒摆成一排,Alice从左向右吃,Bob从右向左吃,吃完一个巧克力就立即吃下一个,如果出现两个人同时吃完而且就剩下最后一根巧克力的情况,因为Alice是女士,Bob会让给Alice吃,那么求最后Alice和Bob吃到哪一个根巧克力棒。
我能写出的简洁代码,希望大家能帮我精简代码
#include <iostream>
using namespace std;
#define MAX 5
void main()
{
int Chocs[MAX] = { 89, 3, 4, 1, 2};
int AliceIdx, BobIdx, AliceEating, BobEating;
AliceIdx = -1;
BobIdx = MAX;
AliceEating = BobEating = 0;
while( AliceIdx + 1 < BobIdx )
{
if( AliceEating <= BobEating )
{
BobEating -= AliceEating;
AliceEating = Chocs[++AliceIdx];
}
else
{
AliceEating -= BobEating;
BobEating = Chocs[--BobIdx];
}
}
if( AliceIdx > -1 )
cout << "Alice Eat Choc (0 - " << AliceIdx << ")" << endl;
if( BobIdx < MAX )
cout << "Bob Eat Choc (" << BobIdx << " - " << MAX - 1<< ")" << endl;
getchar();
}
本文讨论了如何优化并精简一个用于解决巧克力分配问题的代码段,该问题涉及两位参与者Alice和Bob,他们从两端同时吃巧克力棒直至只剩一根。重点在于通过调整循环逻辑和条件判断来减少代码冗余,提高效率。通过分析原始代码,我们识别出可以简化的地方,并提供了优化后的代码实现。
2410

被折叠的 条评论
为什么被折叠?



