gpt4 book ai didi

algorithm - 通过重新排列整数的数字可以形成多少个不同的整数。 [排列]

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:45 25 4
gpt4 key购买 nike

数字不应以零开头。

例子:

给定 123,ans = 3! = 6[123, 132, 213, 231, 312, 321]

给定 1122,ans = 4!/2! = 6[1122, 1212, 1221, 2211, 2121, 2112]

给定 100,ans = 1[不允许使用 010、001]

我被要求写一个java代码来解决这个问题。我未能形成处理零的通用算法。请帮助我提供解决方案和一些阅读 Material 。

最佳答案

编写一个函数来查找组合的数量。假设它叫Integer com(列表数字);要实现这一点,请阅读:https://en.wikipedia.org/wiki/Combination

现在要解决这个问题,首先通过一个com(listOfNumbers)可以找到Total numbers。然后找出开头为 0 的组合数,然后减去它。

例如:

1122

Total combinations possible com(1122) = 4! / (2! X 2!) 
Total numbers starting with 0 = 0

So ans = 4! / (2! X 2!)

001122

Total combinations possible com(001122) = 6! / (2! X 2! X 2!)
Total numbers starting with 0
= fix one 0 in the beginning and find all possible combination for the rest of the numbers
= com(01122) = 5! / (2! X 2!)

So ans = com(001122) - com(01122)

001

Total combinations possible com(001) = 3! / (2!) = 3
Total numbers starting with 0
= fix one 0 in the beginning and find all possible combination for the rest of the numbers
= com(01) = 2! = 2

So ans = com(001) - com(01) = 1

关于algorithm - 通过重新排列整数的数字可以形成多少个不同的整数。 [排列],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43830832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com