小编Abh*_*kar的帖子

找到最少的移动次数

我有以下问题陈述:

给定一个数n(1 <n <10 ^ 9),该集合中数学运算的最小数量(将n除以2,将n除以3,从n减去1)可以用来转换数n到1?

到目前为止,我已经编写了以下代码以尝试解决问题:

while(n!=1){

    if(n%3==0 || n%2==0){
        if(n%3==0){
            n=n/3;
            c=c+1;
        }
        if(n%2==0){
        n=n/2;
        c=c+1;
        }
    }
    else{
        n=n-1;
        c=c+1;
    }
}
System.out.println(c);
Run Code Online (Sandbox Code Playgroud)

但我没有得到所需的输出.有人可以帮助我.

java algorithm math dynamic-programming

7
推荐指数
3
解决办法
2004
查看次数

关于 F# 项目中服务器 GC 的警告

我正在开发我的第一个 F# 项目,并且正在尝试使用 Hopac 库。

我在 Mac 上使用的是 dotnet 版本 3.1.300。我已经使用以下内容初始化了我的项目:

dotnet new console --language F#
dotnet add package Hopac
Run Code Online (Sandbox Code Playgroud)

使用 Hopac 库编写后,按以下方式运行程序:

dotnet run
Run Code Online (Sandbox Code Playgroud)

程序的运行时行为符合我的预期,但我收到以下警告:

警告:您正在使用单线程工作站垃圾收集,这意味着并行程序无法扩展。请配置您的程序以使用服务器垃圾收集。

正如 SO 中的一些线程所建议的,添加以下子句:

<ServerGarbageCollection>true</ServerGarbageCollection>
Run Code Online (Sandbox Code Playgroud)

我在 fsproj 配置中尝试了以下操作:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
  <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>


 <PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

 <ItemGroup>
    <Compile Include="Program.fs" />
 </ItemGroup>

 <ItemGroup>
  <PackageReference Include="Hopac" Version="0.4.1" />
 </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

另外我也尝试过:

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <ServerGarbageCollection>true</ServerGarbageCollection>
   <OutputType>Exe</OutputType>
   <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

 <ItemGroup>
    <Compile Include="Program.fs" />
 </ItemGroup>

 <ItemGroup>
  <PackageReference Include="Hopac" Version="0.4.1" />
 </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

但同样的警告仍然存在。我在 .NET 配置文件方面绝对是新手,所以我是否犯了一些明显的错误?谢谢

f# .net-core

6
推荐指数
1
解决办法
280
查看次数

列出该集的所有子集的时间复杂度?

我在网上发现了许多具有O(2 ^ n)复杂度的解决方案.有人可以帮我弄清楚下面给出的代码的时间复杂性.它也涉及很多位操作,我在那个区域真的很弱,所以我没有完全掌握代码.如果有人能够解释代码,那将会很棒.

private static void findSubsets(int array[])
{
  int numOfSubsets = 1 << array.length; 

  for(int i = 0; i < numOfSubsets; i++)
  {
    int pos = array.length - 1;
    int bitmask = i;

    System.out.print("{");
    while(bitmask > 0)
    {
      if((bitmask & 1) == 1)
         System.out.print(array[pos]+",");
     {
        bitmask >>= 1;
        pos--;
     }
     System.out.print("}");
  }
}
Run Code Online (Sandbox Code Playgroud)

这是最优化的解决方案吗?

java big-o bit-manipulation time-complexity powerset

4
推荐指数
2
解决办法
6375
查看次数

哈希映射条目冲突

我正在尝试此代码段

Map headers=new HashMap();
headers.put("X-Capillary-Relay","abcd");
headers.put("Message-ID","abcd");
Run Code Online (Sandbox Code Playgroud)

现在当我get为其中任何一个键做一个工作正常.但是我在Eclipse调试器上看到了一个奇怪的现象.当我调试并进入变量并首先检查table条目内部时,我看到了这一点

->table
--->[4]
------>key:X-Capillary-Relay
...........
Run Code Online (Sandbox Code Playgroud)

但是经过第二行调试后我得到了

->table
--->[4]
------>key:Message-ID
...........
Run Code Online (Sandbox Code Playgroud)

它不会创建新条目,而是覆盖现有密钥.对于任何其他键,不会发生此覆盖.地图的大小显示为2.并且get两个键都有效.那么eclipse调试器中这种差异背后的原因是什么呢?这是日食问题吗?或者哈希问题.对于2个键,哈希码是不同的.

java eclipse hash dictionary hashmap

3
推荐指数
1
解决办法
81
查看次数

在不同名称空间的单独文件中实现多重方法

我试图在一个单独的文件中定义一个多重方法及其实现。内容如下:在文件1中

(ns thing.a.b)
(defn dispatch-fn [x] x)
(defmulti foo dispatch-fn)
Run Code Online (Sandbox Code Playgroud)

在文件2中

(ns thing.a.b.c
  (:require [thing.a.b :refer [foo]])
(defmethod foo "hello" [s] s)
(defmethod foo "goodbye" [s] "TATA")
Run Code Online (Sandbox Code Playgroud)

在主文件中,当我调用该方法时,我会定义如下内容:

(ns thing.a.e
  (:require thing.a.b :as test))
.
.
.
(test/foo "hello")
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我会说一个例外 "No method in multimethod 'foo'for dispatch value: hello

我究竟做错了什么?还是无法在单独的文件中定义多方法的实现?

polymorphism clojure multimethod

3
推荐指数
1
解决办法
656
查看次数

使用 cqlengine 查询

我正在尝试将cqlengine CQL 3 对象映射器与在 CherryPy 上运行的 Web 应用程序挂钩。尽管文档对查询非常清楚,但我仍然不知道如何对 cassandra 数据库中的现有表(和现有键空间)进行查询。例如,我已经有了包含标题、评级、年份字段的电影表。我想进行 CQL 查询

SELECT * FROM Movies
Run Code Online (Sandbox Code Playgroud)

建立连接后如何继续查询

from cqlengine import connection
connection.setup(['127.0.0.1:9160'])
Run Code Online (Sandbox Code Playgroud)

KEYSPACE被称为“TEST1”。

cql cassandra object-object-mapping cql3 cqlengine

1
推荐指数
1
解决办法
2767
查看次数

避免`unsafePerformIO`在Process Monad中进行交互

我正在使用Cloud Haskell进行消息处理.我也使用一般的monad变换器堆栈(底部有IO)进行状态,配置等的一般跟踪.

我遇到了我必须unsafePerformIO在Process monad中使用的情况.我在描述下面的情况.请记住,这是一个非常人为的例子,可以简化并呈现问题的关键

data AppConfig
data AppState 

type App = ReaderT AppConfig (StateT AppState IO)

runApp :: App a -> Int -> IO (a, AppState)
runApp k maxDepth =
    let config = AppConfig maxDepth
        state = AppState 0
    in runStateT (runReaderT k config) state

msgHandler :: App ()
msgHandler = -- some message handling logic here --

runServer :: Process ()
runServer = do
  let run handler = return $ unsafePerformIO $ runApp handler
  (_,_) <- receiveWait …
Run Code Online (Sandbox Code Playgroud)

haskell cloud-haskell

1
推荐指数
1
解决办法
59
查看次数