问题大概是这样: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();
}