//选取m个数 arr数组个数
-(NSInteger)getzuheWithm:(NSInteger)m Arr:(NSMutableArray *)arr{
// 调用
NSMutableArray *abcArray = [[NSMutableArrayalloc]init];;
for(int i=0;i<arr.count;i++){
[abcArray addObject:[NSNumbernumberWithInt:i]];
}
// 比如从abcArray数组中选取任意两个数的组合。
NSMutableArray *resultArray = [[NSMutableArrayalloc] init];
resultArray = [self zuHeSuanFa:abcArray chooseCount:m];
NSLog(@"count-%tu-",resultArray.count);
return resultArray.count;
}
- (NSMutableArray *)zuHeSuanFa:(NSMutableArray *)array chooseCount:(NSInteger)m
{
NSInteger n = [arraycount];
if (m > n)
{
returnnil;
}
NSLog(@"从1到%tu中取%tu个数的组合。。。",n,m);
NSMutableArray *allChooseArray = [[NSMutableArrayalloc]init];
NSMutableArray *retArray = [arraycopy];
// (1,1,1,0,0)
for(int i=0;i < n;i++)
{
if (i < m)
{
[array replaceObjectAtIndex:iwithObject:@"1"];
}
else
{
[array replaceObjectAtIndex:iwithObject:@"0"];
}
}
NSMutableArray *firstArray = [[NSMutableArrayalloc]init];
for(int i=0; i<n; i++)
{
if ([[arrayobjectAtIndex:i]intValue] == 1)
{
// [firstArray addObject:[NSString stringWithFormat:@"%d",i+1]];
[firstArray addObject:[retArrayobjectAtIndex:i]];
}
}
[allChooseArray addObject:firstArray];
// [firstArray release];
int count = 0;
for(int i = 0; i < n-1; i++)
{
if ([[arrayobjectAtIndex:i]intValue] == 1 && [[arrayobjectAtIndex:(i + 1)] intValue] == 0)
{
[array replaceObjectAtIndex:iwithObject:@"0"];
[array replaceObjectAtIndex:(i + 1)withObject:@"1"];
for (int k = 0; k < i; k++)
{
if ([[arrayobjectAtIndex:k]intValue] == 1)
{
count ++;
}
}
if (count > 0)
{
for (int k = 0; k < i; k++)
{
if (k < count)
{
[array replaceObjectAtIndex:kwithObject:@"1"];
}
else
{
[array replaceObjectAtIndex:kwithObject:@"0"];
}
}
}
NSMutableArray *middleArray = [[NSMutableArrayalloc]init];
for (int k = 0; k < n; k++)
{
if ([[arrayobjectAtIndex:k]intValue] == 1)
{
// [middleArray addObject:[NSString stringWithFormat:@"%d",k + 1]];
[middleArray addObject:[retArrayobjectAtIndex:k]];
}
}
[allChooseArray addObject:middleArray];
// [middleArray release];
i = -1;
count = 0;
}
}
return allChooseArray;
}