首先,我必须承认这是我的任务。但我不是要求任何人解决它,但我正在努力解决它,并需要我的算法帮助。
我有一个权重数组,分配给一个比例的leftSide和rightSide。我需要使用数组中的权重来平衡右侧和左侧的权重。
我有以下代码但它并未涵盖所有情况:
-(BOOL) isBalanced
{
_weights = [NSMutableArray arrayWithArray:@[@3,@4,@2,@1,@5,@6,@4]];
self.leftSide = [[_weights objectAtIndex:arc4random() % 7] integerValue]; // random weight
self.rightSide = [[_weights objectAtIndex:arc4random() % 7] integerValue]; // random weight
if(self.leftSide == self.rightSide) return YES; // already balanced
if(self.leftSide > self.rightSide)
{
// add weights on right side
int difference = self.leftSide - self.rightSide;
int index = [_weights indexOfObject:[NSNumber numberWithInt:difference]];
self.rightSide += [[_weights objectAtIndex:index] integerValue];
NSLog(@"%d",index);
}
else
{
int difference = self.rightSide - self.leftSide;
int index = [_weights indexOfObject:[NSNumber numberWithInt:difference]];
self.leftSide += [[_weights objectAtIndex:index] integerValue];
NSLog(@"%d",index);
}
return self.leftSide == self.rightSide;
}
更新:
简化!我有一个数字6,现在我需要在一个int数组中搜索,如果有任何数字可以加在一起得到6.例如:
1,2,3,5,4
在上面的数组中,我可以取1 + 2 + 3,这就是6.我也可以取4 + 2,这是6.我的问题是如何找到总数达到6的个别数字。< / p>