【问题标题】:Given a masked number, count all the possible number divisible by n给定一个掩码数,计算所有可能被 n 整除的数
【发布时间】:2017-11-29 08:04:33
【问题描述】:

我有一个动态编程练习,但我不知道它在这里如何工作:

我们有一个神秘的数字是一个由数字和星号*组成的字符串。 给定一个神秘数,计算所有可能的自然数,将星号 * 替换为一个数字,得到一个可被 n 整除的整数。 例如:

对于 1*1* 和 n = 6,有 16 个可能的数可以被 n 整除:1014, 1110, 1116, 1212, 1218, 1314, 1410, 1416, 1512, 1518, 1614, 1710, 1716, 1812, 1818, 1914.

如果有一个前导星号,那么它不应该被零替换:

*12 -> 112(可以)但 *12 -> 012(不可以)

输入:

1

1

时间限制:

在 C++ 语言中为 500 毫秒。正如我所说,这是一个动态编程练习。

谁能给我一些提示?

【问题讨论】:

  • 您是否提前知道n 的值,或者那是您程序输入的一部分? (如果事先知道可能有捷径:对于n=6,最后一个数字必须是偶数,并且数字之和必须是3的倍数。)如果事先不知道n,那么暴力破解是否有问题(用数字替换星号并用n除以测试所有可能性)?您的编程语言中的字符串大小或整数大小是否有限制?好的解决方案需要这些细节。
  • 抱歉我的错误,n 是事先不知道的:n 在 1-1000 的范围内,神秘数字的大小在 1 -1000 的范围内,时间限制为 500ms,使用 C++ 语言。所以我不认为会有蛮力@RoryDaulton的地方
  • 如果你需要我可以给你递归算法的代码。但不知道动态。 500毫秒也是很多时间!!!!!!这个算法只需要 1ms
  • 我同意:500 毫秒是很多时间。考虑到您的限制,最多可以通过蛮力轻松完成 3 颗星。

标签: math dynamic-programming integer-division


【解决方案1】:

我为你写了一个 JavaScript 它可以工作,你可以把它改成 c++, 也给你留言。它使用递归来处理和替换左边的每个 * 并用可能的数字替换它

var string = "sample mystriuos number"

function Func(mysNumber , n ) 
{
    // this function 
    var realnumber = true // a check if number is not mystrius anymore!!
    for (var i=0 ; i<= mysNumber.length ; i++)
    {
        if(i !=0 && mysNumber[i]=="*") // for  Not left number
        {
            realnumber= false
            for(var j=0 ; j<=9 ;j++ )
            {
                Func(mysNumber.substring(0,i) + j.toString() + mysNumber.substring(i+1,mysNumber.length) ,n)
            }
        }
        else if (mysNumber[i]=="*") // for left number 
        {
            realnumber = false
            for(var j=1 ; j<=9 ;j++ )
            {
                Func(mysNumber.substring(0,i) + j.toString() + mysNumber.substring(i+1,mysNumber.length) ,n)
            }

        }
    }

    if(realnumber)
        if(parseInt(mysNumber) % n ==0)
            print(mysNumber)


}
func(string , 6)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2011-05-27
    相关资源
    最近更新 更多