小编xan*_*xan的帖子

数字等于其数字的幂的总和

我有另一个有趣的编程/数学问题.

For a given natural number q from interval [2; 10000] find the number n
which is equal to sum of q-th powers of its digits modulo 2^64.
Run Code Online (Sandbox Code Playgroud)

例如:for q=3, n=153; for q=5, n=4150.

我不确定这个问题是否更适合math.se或stackoverflow,但这是我朋友很久以前告诉我的编程任务.现在我记得那个,并想知道如何做到这一点.怎么解决这个问题?

algorithm discrete-mathematics

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

TTimer对象可以是Delphi类的字段吗?

我两天前开始学习Delphi但是我遇到了困难.我崩溃了,因为没有什么事情发生,所以我决定写在这里.我想创建一个具有自己的TTimer对象的字段的类,它将在某个时间间隔执行某些操作.它甚至可能吗?假设我们有这样的代码:

Sth = class
private

public
  clock:TTimer;
  procedure clockTimer(Sender: TObject);
  constructor Create();
end;

constructor Sth.Create()
begin
  clock.interval:=1000;
  clock.OnTimer := clockTimer;
end;

procedure Sth.clockTimer(Sender: TObject);
begin
  //some action on this Sth object at clock.interval time...
end;
Run Code Online (Sandbox Code Playgroud)

我的类似代码复制,但它无法正常工作.当我调用构造函数时,程序崩溃了(在行的访问冲突:clock.interval:= 1000;).我不知道是什么

Sender:TObject 
Run Code Online (Sandbox Code Playgroud)

但我觉得这不是问题.是否有可能创建我想要的课程?

delphi

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

使用不相交集数据结构,图论

我正在练习解决空闲时间的编程问题.我前段时间发现这个问题但仍然不知道如何解决它:

对于具有n个顶点和m个边(小于2×10 6)的给定无向图,我需要将其顶点分成尽可能多的组,但是有一个条件:来自不同组的每对顶点通过边连接.每个顶点恰好在一个组中.最后,我需要知道每个组的大小.

当我提出这个解决方案时,我感到很自豪:考虑原始图的补充图并使用Disjoint-set数据结构.它给了我们正确的答案(不难证明).但这只是理论上的解决方案.在给定的约束下,它非常非常糟糕,不是最优的.但我相信这种方法可以巧妙地修复.但是怎么样?

有人可以帮忙吗?

编辑:对于顶点为1到7和16个边的图:

1 3

1 4

1 5

2 3

3 4

4 5

4 7

4 6

5 6

6 7

2 4

2 7

2 5

3 5

3 7

1 7

我们有3组大小:1,2和4.

这些组分别为:{4},{5,7},{1,2,3,6}.有连接不同组的每对顶点的边,我们无法创建更多组.

algorithm graph graph-algorithm data-structures

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

矩阵中矩阵最大的正方形

我想,我有一个很典型的问题.我知道这里有类似的主题但是要明白我是初学者并且不区分这个问题的不同版本.有时文本和算法的差异可能完全不同.所以问题是:

For a given 2<=a,b<=1000 and 1<=c<=Min(a,b) find in matrix a x b square c x c 
with the largest sum of elements. The elements in matrix are from -1000 to 1000.
Run Code Online (Sandbox Code Playgroud)

我可以编写一个运行整个矩阵的算法,并在每个点(x,y)上计算平方(x,y),(x + c,y),(x,y + c),(x +)的和C,Y + C).然后我选择了最大的金额.有了这些限制,我认为它可能会非常快,但有没有更快的算法?我不擅长计算算法复杂度,但似乎是O(a*b*c*c).如果我在最坏的情况下没有错,它可能不会停止..

algorithm

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

锦标赛中可能获胜的算法

我正在准备考试,但我遇到了这个问题:

我们有n支球队,彼此交手两次。每场比赛均以平局结束。获胜次数最多的团队被宣布为获胜者(可以多于一个)。设计一种算法,在给定一组初始比赛结果的情况下,检查某个球队是否仍有机会成为本次锦标赛的获胜者。

我不知道如何接近。该问题被放在“流量和匹配”类别中,但我不明白这怎么可能是最大流量问题。

algorithm tournament graph-algorithm

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

德尔福有很多可移动的方块

我想出了一个让我更好地理解Delphi的练习.它包含了我一定想知道的所有内容.我正在使用Graphics32组件(TRect,TPaintBox32等)和Borland Delphi 7.

行使.编写一个类Square(最好是与主程序不同的.pas文件),它允许在程序的主要形式上绘制正方形(参数如:颜色,大小,在构造函数中预先设置的屏幕上的位置).双击某个方块应改变其颜色为随机颜色.当我们点击并按住某个方格时,我们应该能够用鼠标移动此方块直到我们释放单击.

我看待它的方式:在程序的主要形式中,我将创建Square的数组,然后其余的将由Square类的方法完成.但我不知道这是否可能?绘制正方形,处理点击对我来说是非常有问题的.Square类是否需要单独的表单(.dfm文件)?

我非常感谢你的帮助.

编辑:广场的中心及其边框应采用不同的颜色.在边框颜色的正方形中间添加一条水平线也很不错.

编辑2:我不知道如何将你的提示应用到我的程序.也许在某些代码上会更容易帮助我.

在这里,我有一个类Box,代表应该能够模拟布朗运动的正方形:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GR32, GR32_Image, ExtCtrls, StdCtrls;

type
  Box = class

  private
    speed:TTimer;
    liveTime:TTimer;
    isAlive:boolean;
    rect:TRect;
    live:integer;
  public
    //procedure PaintBox321PaintBuffer(Sender: TObject);
    procedure liveTimeTimer(Sender: TObject);
    procedure speedTimer(Sender: TObject);
    function color():TColor32;
    constructor Create();
  end;

implementation

  constructor Box.Create();
    var x,y:integer;
  begin
    x:=random(900); y:=random(420);
    rect:=MakeRect(x,y,x+30,y+30);
   isAlive:=true; live:=random(26)+5;

    liveTime := TTimer.Create(nil);
    speed := TTimer.Create(nil);
    liveTime.interval:=1000;
    speed.interval:=live*100;
    liveTime.OnTimer := liveTimeTimer;
    speed.OnTimer := speedTimer;
  end;

  {
  procedure Box.PaintBox321PaintBuffer(Sender: …
Run Code Online (Sandbox Code Playgroud)

delphi

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

序列的数据结构

我正在从数据结构进行测试培训,但我无法解决这个问题:

设计一个数据结构,它保存序列a_1,...,a_n,并可以对其执行两个操作:

  1. 将a_i设置为值x
  2. 计算x在两个索引之间的序列中出现的次数:i和j; 只是为了确保我说清楚(我不擅长英语)这意味着返回|{a_k: a_k = x and i <= k <= j}|给定的:x,i,j.

限制:

  • a_i来自区间[0,...,10 ^ 9],
  • n较小 - 小于10 ^ 5

这两个操作应该在最多O(log n)时间内工作.不幸的是,我看到它的唯一方法是O(log ^ 2 n).我们maps<int,int>在节点中保留间隔树,它计算在子树中出现x次的次数.同样重要的是不要保留0次出现的映射值(内存复杂性).

我怎样才能更好地解决它?有人可以帮忙吗?

algorithm data-structures

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

段打包算法

我提出了一个有趣的(我认为)问题,无法找到解决方案.这可能是NP-Complete(像其他一些包装问题一样)吗?如果是这样,减少会怎样?

给出一个数组1..n,其中包含一些元素和段长度列表.问题是,我们可以将这些段打包到此数组中,以便没有段彼此重叠并占用元素吗?

示例,数组:| _ _ _ _ x _ _ _ _ _ _ | (x - 占用,下划线表示它是免费的)和长度:3,3,4.在这种情况下答案是YES,因为实际上我们在这个数组中有两个容器:4,6,我们可以打包前两个段在容量为6的容器中,最后一个容器在第一个容器中.

arrays algorithm

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

为什么私有构造函数在 case 类中仍然可见?

我想将构造函数及其字段隐藏在一个类中,并且只使用伴随对象创建实例,但我无法实现。我有 Scala 2.13.3,它基于 java 8。这是一个代码示例:

斯卡拉

package X

object A {
  def apply(x: Int): A = A(Seq(x))
}

case class A private(private val s: Seq[Int])
Run Code Online (Sandbox Code Playgroud)

甜菜

package Y

import X.A

class B {
  val b = A(Seq.empty)
}
Run Code Online (Sandbox Code Playgroud)

虽然我只想让apply(x:Int)这段代码可见,但编译后的私有构造函数也是可见的。如何更改此代码以按预期工作?

scala access-modifiers private-constructor case-class companion-object

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

Cabal找不到外国图书馆

最近我试图安装llvm-general-3.5.1.0软件包大约一个星期.基本上我收到此错误:链接.我的情况完全相同.Windows 10,ghc 7.10.2,cabal 1.22.4.0.我用cmake从源代码安装了llvm 3.5.2,一切都很顺利.在llvm/lib目录中,我有*.lib文件(例如LLVMAnalysis.lib).

但不知何故,cabal无法看到这些库并给出了这个令人沮丧的错误:

配置llvm-general-3.5.1.0 ... setup.exe:缺少对外部库的依赖:*缺少C库:LLVMLTO,LLVMObjCARCOpts,LLVMLinker,LLVMipo,LLVMVectorize,LLVMBitWriter,LLVMCppBackendCodeGen,LLVMCppBackendInfo,LLVMTableGen,LLVMDebugInfo,LLVMOption,LLVMX86Disassembler, LLVMX86AsmParser,LLVMX86CodeGen,LLVMSelectionDAG,LLVMAsmPrinter,LLVMX86Desc,LLVMX86Info,LLVMX86AsmPrinter,LLVMX86Utils,LLVMJIT,LLVMIRReader,LLVMAsmParser,LLVMLineEditor,LLVMMCAnalysis,LLVMMCDisassembler,LLVMInstrumentation,LLVMInterpreter,LLVMCodeGen,LLVMScalarOpts,LLVMInstCombine,LLVMTransformUtils,LLVMipa,LLVMAnalysis,LLVMProfileData,LLVMMCJIT,LLVMTarget, LLVMRuntimeDyld,LLVMObject,LLVMMCParser,LLVMBitReader,LLVMExecutionEngine,LLVMMC,LLVMCore,LLVMSupport这个问题通常可以通过安装系统包,提供这些库解决(你可能需要"-dev"版本).如果库已经安装但是在非标准位置,那么您可以使用标志--extra-include-dirs =和--extra-lib-dirs =来指定它们的位置.

我真的想在我的Windows上使用这个软件包,但似乎没有任何工作(我尝试了所有的东西,如--extra-lib-dirs,并与MinGW和VS一起编译 - 同样的问题).

我不能接受它不会安装的事实.我的意思是,必须有一些方法来修复此cabal包中的Setup.hs.有没有人知道在这种情况下cabal有什么问题,我该如何尝试解决这个问题?我不知道cabal究竟是如何运作的,也许有这种知识的人会有想法?或者也许有一种方法可以做到这一点没有cabal?

haskell llvm ghc cabal windows-10

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