首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective-C中的排列/字谜 - 我遗漏了一些东西

在Objective-C中,排列/字谜通常是指对数组或字符串中的元素进行重新排列或重新组合。这可以通过使用排列算法来实现,例如递归回溯算法或者Fisher-Yates算法。

在Objective-C中,排列算法可以通过以下方法实现:

  1. 递归回溯算法:

递归回溯算法是一种通过递归调用自身来解决问题的算法。在Objective-C中,可以使用递归回溯算法来生成排列。

代码语言:objective-c
复制
- (void)permute:(NSMutableArray *)nums
         result:(NSMutableArray *)result
         temp:(NSMutableArray *)temp
         start:(int)start {
    if (start == nums.count) {
        [result addObject:[temp mutableCopy]];
    } else {
        for (int i = start; i < nums.count; i++) {
            [temp exchangeObjectAtIndex:start withObjectAtIndex:i];
            [self permute:nums result:result temp:temp start:start+1];
            [temp exchangeObjectAtIndex:start withObjectAtIndex:i];
        }
    }
}

- (NSArray *)permute:(NSArray *)nums {
    NSMutableArray *result = [NSMutableArray array];
    NSMutableArray *temp = [NSMutableArray arrayWithArray:nums];
    [self permute:nums result:result temp:temp start:0];
    return result;
}
  1. Fisher-Yates算法:

Fisher-Yates算法是一种对有限序列进行随机排列的算法。在Objective-C中,可以使用Fisher-Yates算法来生成排列。

代码语言:objective-c
复制
- (NSArray *)shuffle:(NSArray *)array {
    NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
    for (int i = mutableArray.count - 1; i >= 1; i--) {
        int j = arc4random_uniform((u_int32_t)(i + 1));
        [mutableArray exchangeObjectAtIndex:i withObjectAtIndex:j];
    }
    return mutableArray;
}

在Objective-C中,字谜可以通过对字符串中的字符进行重新排列来实现。可以使用递归回溯算法或Fisher-Yates算法来生成字谜。

代码语言:objective-c
复制
- (NSArray *)generateAnagrams:(NSString *)word {
    NSMutableArray *result = [NSMutableArray array];
    [self generateAnagramsHelper:word result:result current:0];
    return result;
}

- (void)generateAnagramsHelper:(NSString *)word
                         result:(NSMutableArray *)result
                        current:(NSInteger)current {
    if (current == word.length - 1) {
        [result addObject:word];
    } else {
        for (NSInteger i = current; i< word.length; i++) {
            NSMutableString *temp = [word mutableCopy];
            [temp replaceCharactersInRange:NSMakeRange(current, 1) withString:[word substringWithRange:NSMakeRange(i, 1)]];
            [self generateAnagramsHelper:temp result:result current:current+1];
        }
    }
}

总之,在Objective-C中,排列/字谜可以通过使用排列算法和字符串操作来实现。可以使用递归回溯算法或Fisher-Yates算法来生成排列,使用字符串操作来生成字谜。

相关搜索:key_on -我遗漏了一些明显的东西我在查看localStorage调用中的对象时遗漏了一些东西片段测试,我遗漏了一些相当于ActivityScenarioRule的东西Heroku错误?说我的package.json遗漏了一些东西为什么我的recyclerView在onBindViewHolder中重做了一些东西?巨大的差异。在训练和测试准确性之间:只是过度拟合,还是我遗漏了一些显而易见的东西?Openlayers -删除要素时出现事务问题,看起来我在feature属性中遗漏了一些东西,因为响应显示o deleted我不小心从我的路径中删除了一些东西。我做什么好?在Android中我如何上传一些东西到一个匿名的Dropbox文件请求?在react本机中更改可打印颜色时遇到问题。我让它在没有数组的情况下工作,我是不是遗漏了什么明显的东西?我可以让生成器中的第一个元素返回一些特殊的/不同的东西吗?嘿,我正试着用selenium自动化python中的一些东西,但是我似乎不能点击按钮。截图附在下面为什么在我尝试输入一些东西之前,django中的html模板就会显示所有可能的错误输入消息?我想在add方法中升级表属性,当我在一个表中添加一些东西时,我想要减少另一个表中的属性我正在尝试将CORS正确地实现到我的JavaScript代码中,它工作了一段时间,我相信我在项目中遗漏了一些文件?我想知道是否有任何方法可以通过在我的html中输入一些东西来知道哪个控制器与我的部分相关联?我试图创建一个编辑文本的程序,让你从一些东西中选择,并将它们更改为几个选项中的一个当一个人使用say命令时,我正在尝试记录一些东西。机器人在多个servers.How中,我能让它登录多个服务器的通道吗
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券