问题列表 - 第1451页

一维嵌套算法

将1维长度嵌套到预定义的库存长度中的有效算法是什么?

例如,如果您需要以下数量和长度的钢筋,

  • 5 x 2米
  • 5 x 3米
  • 5 x 4米

这些可以从10米棒切割.你如何计算切割10米棒的模式,以便使用最小数量的棒?

另外,如何在算法中加入多个库存长度?


我有一些时间来处理这个问题,所以我要写下我是如何解决它的.我希望这对某人有用.我不确定是否可以像这样回答我自己的问题.如果更合适,主持人可以将此更改为答案.

首先感谢所有回答的人.这指出了适当的算法; 切割库存问题.

这篇文章也很有用; "计算最少量的减产废物的切割清单".

好的,关于解决方案.

我将在我的解决方案中使用以下术语;

  • 库存:一定长度的材料将被切成小块
  • 切割:从库存中切割出的一段材料.可以从同一块库存中取出多个切口
  • 废物:在完成所有切割后留在一块原料中的材料长度.

解决问题有三个主要阶段,

  1. 确定所有可能的切割组合
  2. 确定可以从每个库存中获取哪些组合
  3. 找到最佳的切割组合组合.

步骤1

N切口有2 ^ N-1个独特的切割组合.这些组合可以表示为二元真值表.

A,B,C是独特的切口;

A B C | Combination
-------------------
0 0 0 | None
0 0 1 | C
0 1 0 | B
0 1 1 | BC
1 0 0 | A
1 0 1 | AC
1 1 0 | AB
1 1 1 | ABC …
Run Code Online (Sandbox Code Playgroud)

algorithm

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

在winforms应用程序中调整主窗体大小时,如何调整面板大小?

如果我的winforms应用程序的用户调整了主窗体的大小,我希望2个面板与子控件一起伸展.

我怎样才能做到这一点?

resize winforms

7
推荐指数
2
解决办法
2万
查看次数

在C语言中在构建时ASSERT表达式的方法

我正在整理一些旧的代码,这些代码使用"幻数"来设置硬件寄存器,我想使用常量而不是这些数字来使代码更具表现力(实际上它们将映射到名称/用于记录寄存器的值).

但是,我担心随着变化的数量,我可能会打破神奇的数字.这是一个简化的例子(寄存器集更复杂):

const short mode0 = 0;
const short mode1 = 1;
const short mode2 = 2;

const short state0 = 0;
const short state1 = 4;
const short state2 = 8;
Run Code Online (Sandbox Code Playgroud)

而不是:

set_register(5);
Run Code Online (Sandbox Code Playgroud)

我们有:

set_register(state1|mode1);
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是构建时间版本:

ASSERT(5==(state1|mode1));
Run Code Online (Sandbox Code Playgroud)

更新

@Christian,感谢快速响应,我对C/non-boost环境的答案感兴趣,因为这是驱动程序/内核代码.

c refactoring assert static-assert

25
推荐指数
8
解决办法
2万
查看次数

如何使用TFS检测文件修改?

似乎当我使用工具(例如winmerge)来更新我的代码库时...我的Visual Studio Team System(VSTS)与Team Foundation Server(TFS)的集成似乎并没有找到它.

我如何知道要检出哪些文件并重新登录?有什么我想念的吗?这是不属于VSTS和TFS的功能吗?

version-control tfs winmerge visual-studio

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

如何检查正则表达式中的两个子表达式中是否至少有一个匹配?

我试图将浮点十进制数与正则表达式匹配.小数点前可能有也可能没有数字,小数可能存在也可能不存在,如果存在则可能有或没有数字.(对于此应用程序,不允许使用前导+/-或尾随"E123").我写了这个正则表达式:

/^([\d]*)(\.([\d]*))?$/
Run Code Online (Sandbox Code Playgroud)

哪个正确匹配以下内容:

1
1.
1.23
.23
Run Code Online (Sandbox Code Playgroud)

但是,这也匹配空字符串或只是小数点的字符串,这是我不想要的.

目前我在运行正则表达式后检查$ 1或$ 3的长度大于0.如果不是,则无效.有没有办法可以在正则表达式中直接执行此操作?

regex syntax

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

为什么RSACryptoServiceProvider.VerifyHash需要LDAP检查?

我最近遇到了一个奇怪的问题RSACryptoServiceProvider.VerifyHash.

我有一个使用它进行解密的Web应用程序.当运行Web服务的用户通过我们的VPN这样做时,它变得非常慢.当他们没有连接或互联网连接时,他们没事.

经过多次挖掘后,我发现每次RSACryptoServiceProvider.VerifyHash调用它都需要检查LDAP请求MyMachineName\ASPNET.

对于我们的WebDev(基于cassini)服务器而言,这不会发生,因为它们作为当前用户运行,并且它只是在VPN上非常慢,但它根本不会发生.

由于以下几个原因,这似乎是错误的:

  • 为什么检查本地计算机用户的域控制器?
  • 它为什么关心?加密/解密无论如何都有效.

有谁知道为什么会发生这种情况或如何最好地解决它?

.net c# asp.net encryption rsacryptoserviceprovider

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

为什么getenv('REMOTE_ADDR')给我一个空白的IP地址?

这个PHP代码......

207    if (getenv(HTTP_X_FORWARDED_FOR)) {
208        $ip   = getenv('HTTP_X_FORWARD_FOR');
209        $host = gethostbyaddr($ip);
210    } else {
211        $ip   = getenv('REMOTE_ADDR');
212        $host = gethostbyaddr($ip);
213    }
Run Code Online (Sandbox Code Playgroud)

抛出这个警告......

警告: gethostbyaddr()[function.gethostbyaddr]:第212行的C:\ inetpub ...\filename.php中的地址不是abcd格式

似乎$ ip是空白的.

php ip-address

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

在数据库字段名称中编码度量

我有关于在数据库领域的一个问题是至极可能显示不同的单位,但仅存储在一个措施,如"高度",例如.

应该在哪里说明"模式单位"?当然,在文档中等...但是我们都知道没有人阅读文档,并且自我文档化的东西是可取的.

从实际的角度来看,您如何看待在数据库字段中编码(例如height_cm)?

我发现这个奇怪的在第一次看,但我觉得它实用避免任何错误时,不同的人直接处理数据库和"模式单位"永远不会改变.

你怎么看?.

问候.

database language-agnostic coding-style

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

.Net WebBrowser.DocumentText没有改变!

在我的vb.net程序中,我使用webbrowser向用户显示HTML预览.我以前在服务器上抓取HTML,然后返回异步线程并引发事件以使用我返回的HTML字符串填充WebBrowser.DocumentText.

现在我将其设置为获取客户端上的所有信息,而不必访问服务器,我正在尝试提升相同的事件.我看着代码经过,它有正确的HTML字符串和一切,但当我尝试做

browser.DocumentText = _emailHTML
Run Code Online (Sandbox Code Playgroud)

DocumentText的内容仍为" <HTML></HTML>"

我只是想知道为什么没有设置DocumentText.有人有什么建议吗?

.net html browser

40
推荐指数
3
解决办法
4万
查看次数

Log4Net"无法找到架构信息"消息

我决定使用log4net作为新web服务项目的记录器.一切都运行正常,但我收到了很多消息,如下面的消息,对于我在我使用的每个log4net标签web.config:

找不到元素'log4net'的架构信息......

以下是我的相关部分web.config:

  <configSections>
    <section name="log4net" 
        type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="C:\log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level: %message%newline" />
      </layout>
    </appender>
    <logger name="TIMServerLog">
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </logger>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

解决了:

  1. 将每个log4net特定标记复制到单独的xml文件.确保.xml用作文件扩展名.
  2. 将以下行添加到AssemblyInfo.cs:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlFile.xml", Watch = true)]
Run Code Online (Sandbox Code Playgroud)

nemo补充道:

只需向任何人发出警告,请遵循此主题中的答案建议.将x4中的log4net配置放在Web服务的根目录下可能存在安全风险,因为默认情况下任何人都可以访问它.如果您的配置包含敏感数据,请注意,您可能希望将其放在何处.


@wcm:我尝试使用单独的文件.我添加了以下行AssemblyInfo.cs

[assembly: …
Run Code Online (Sandbox Code Playgroud)

schema logging log4net web-services web-config

57
推荐指数
4
解决办法
4万
查看次数