计算纸牌在全部使用且不重复使用的情况下,有几种排序方式
// 纸牌数组(三张纸牌,未使用标记为0, 可以根据数组中的位置,理解为1,2,3)
self.cardArr = [@[@"0",@"0",@"0"] mutableCopy];
// 盒子数组 (最开始是空盒子)
self.boxArr = [@[@"",@"",@""] mutableCopy];
- (void)depthSearchWithNumber:(NSInteger)current {
// 当前盒子大于纸牌数的时候结束(数组索引从0开始,索引等同于个数的时候就是超出了)
if (current == self.cardArr.count) {
// 遍历输入当前盒子中的纸牌数
for (NSInteger i = 0; i < self.count; i ++) {
// 输出这组数子(由于从0开始的, 加1等同于从1开始)
NSLog(@"%d",[self.boxArr[i] intValue] + 1);
}
return;
}
// 遍历所有纸牌
for (NSInteger i = 0; i < self.cardArr.count; i++) {
// 判断当前纸牌是否使用过
if ([self.cardArr[i] isEqualToString:@"0"]) {
// 把未使用的纸牌放进当前盒子中
self.boxArr[current] = [NSString stringWithFormat:@"%ld",i];
// 把放进盒子中的纸牌标记为已使用过
self.cardArr[i] = @"1";
// 进行下一个盒子的操作
[self depthSearchWithNumber:current + 1];
// 把刚刚使用过
self.cardArr[i] = @"0";
}
}
}