脑子突然不好使了,请各位大佬帮我想想这个算法

2020-09-07 11:53:20 +08:00
 lihongming

已知有一个长度为 26 的整型数组,分别代表 26 个字母的个数,问这些字母能组成多少种不同的字符串(取模 1000000007 )。

我本来觉得挺简单,不就是迭代吗?抬手就来

int calc(int[] nums) {
    int ret = 0;
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] > 0) {
            nums[i]--;
            ret += calc(nums);
            ret %= 1000000007;
            nums[i]++;
        }
    }
    return ret > 0 ? ret : 1;
}

结果效率太差,不行。

我又想用数学的方法直接算,可脑子怎么也想不起该怎么算了,求大佬们指点。

4873 次点击
所在节点    程序员
22 条回复
no1xsyzy
2020-09-08 18:20:42 +08:00
竟然是可以的…… 之前拍脑袋了
已知整除的话,整除是模数空间上的群……
那没关系了,用模数空间上的整除做就行了。
no1xsyzy
2020-09-08 18:30:09 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/704808

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX