c# - 给定一个字符串列表,分配到两个 100 个字符的字段中

标签 c# algorithm

我不确定问这个问题的最佳方式是什么,所以请多多包涵。

我有一个旧平台,它有 2x 100 varchar 字段用于保存分隔的电子邮件地址。

我想拍一个List<String>并将其分配到两个字段中,以便我可以添加最大数量的项目。显然,电子邮件地址的长度各不相同,必须在条目之间添加分隔符“;MAPI:”。顺序无关紧要,对 field2 的唯一要求是 field1 至少有一个条目。

当用户尝试向列表中添加新地址时将调用此新方法,因此新项目完全有可能不适合任何安排,在这种情况下我会简单地告诉用户该字段可以不接受该长度的地址。

我尝试按长度排序并将项目添加到 field1 直到它已满,然后将剩余部分添加到 field2 但这不是“最佳”,因为如果我为 field2 留下一个或多个短条目,那么长条目可能会更好填写字段1

最佳答案

这是一个 NP-hard 的一维背包问题,因此您只能通过有效时间来优化解决方案,例如使用动态规划。 https://en.wikipedia.org/wiki/Knapsack_problem

关于c# - 给定一个字符串列表,分配到两个 100 个字符的字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326142/

相关文章:

c# - 在 MVC Controller 中使用命令查询分离原则

c# - 如何在 C# 中使用 List<string> 传递属性参数类型?

c++ - 用最少的探测找到函数的最大值

algorithm - 给定一组整数集 S,找到可能的最小整数集 X,使得 S 中的每个集合都至少包含一个也在 X 中的整数

c++ - 三重嵌套循环中的该语句执行多少次?

c# - var 和 Class 类在对象创建上的区别

c# - 对 WCF 调用进行单元测试,是否可能以及如何进行?

c# - Datagridview 上下文菜单总是在 hittest 中显示 -1

algorithm - 在二叉搜索树中查找高度

algorithm - 我怎样才能让我的应用程序很好地扩展?