小编prv*_*vit的帖子

如何使用背包算法[而不仅仅是包的价值]找到包中的元素?

我有一个代码,通过背包算法计算最佳值(bin packing NP-hard problem):

int Knapsack::knapsack(std::vector<Item>& items, int W)
{
    size_t n = items.size();
    std::vector<std::vector<int> > dp(W + 1, std::vector<int>(n + 1, 0));
    for (size_t j = 1; j <= n; j++)
    {
        for ( int w = 1; w <= W; w++)
        {
            if (items[j-1].getWeight() <= w)
            {
                dp[w][j] = std::max(dp[w][j-1], dp[w - items[j-1].getWeight()][j-1] + items[j-1].getWeight());
            }
            else
            {
                dp[w][j] = dp[w][j - 1];
            }
        }
    }
    return dp[W][n];
}
Run Code Online (Sandbox Code Playgroud)

另外,我需要显示包含在内的元素.我想创建一个数组,添加一个元素.所以问题在于添加这个添加的步骤,或者可能还有其他更有效的方法吗?

问题:我希望能够了解为我提供最佳解决方案的项目,而不仅仅是最佳解决方案的价值.

PS.对不起我的英语,这不是我的母语.

c++ algorithm knapsack-problem

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

如何在一个项目中使用多个应用程序配置文件?

创建新的Visual C#控制台应用程序(.NET Framework 4.5)后,此类项目包含默认的App.config文件.

新的Visual C#控制台应用程序

将System.Configuration的引用添加到项目并在某个源文件中使用它之后,using System.Configuration;我可以使用静态类ConfigurationManager来操作App.config文件.但之前,我想在文件中添加一些设置,所以它有点像这样:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="DeployWeb" value="true" />
  </appSettings>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

现在,我可以写这样的东西,以获得设置的值:

Boolean deployWeb = false;
Boolean.TryParse(ConfigurationManager.AppSettings["DeployWeb"], out deployWeb);
Run Code Online (Sandbox Code Playgroud)

但是我没有设置要读取的配置文件,但是没关系,因为有默认配置文件.但是我可以通过右键单击项目 - >添加 - >新项目... - >应用程序配置文件来添加更多配置文件,这样我就可以获得5个配置文件,如图所示:

项目中的几个配置文件

并且ConfigurationManager仍将读取默认值,但我想手动控制,使用哪个配置文件.我想知道,如果有适当的方法设置 ConfigurationManager配置文件名使用等,如果这不是一个坏的做法.我知道如何在调试/发布模式下使用不同的配置,但在我的情况下,我有一个应用程序,例如,可以在不同的模式下运行,以便在发布中用于不同的目的.

问题:是否可以在项目中包含多个配置文件,并且能够切换我想要使用的配置文件.这不是一个坏习惯,我是否应该使用另一种方法来实现我的目的?在我的情况下使用构建事件是不合适的(我认为).

PS.我很抱歉伸出我的问题,但是我很简单,可以用两句话来问,但正如规则所说,问题应该包含细节.

更新:从现有的答案 "选项:您可以使用ConfigurationManager类通过代码加载备用配置文件." 从阅读msdn我没有得到我应该使用哪种方法.我应该打开Exe配置吗?

.net c# visual-studio

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

定时器关闭应用程序

如何制作一个计时器,强制应用程序在C#中的指定时间关闭?我有这样的事情:

void  myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    if (++counter == 120)
        this.Close();
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,应用程序将在计时器运行后的120秒内关闭.我需要一个计时器,它将关闭应用程序,例如23:00:00.有什么建议?

c# timer

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

按下"Ctrl + C"按钮处理C#控制台应用程序

如何处理同时按下的两个按钮('Ctrl'+'C'),而不是在WindowsForms应用程序中,而是在控制台C#应用程序中?

c# console-application event-handling

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

计算执行时间

我需要计算执行某个过程的时间.例如,我想要读取文件中的所有行,但如果它超过5秒,则显示消息框.我应该创建怎样和什么计时器来处理这个"5秒"?

.net c# winforms

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