Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将两个列表合并为一个,并根据优先级C拆分重叠#_C#_Algorithm_Sorting_Merge_Split - Fatal编程技术网

C# 将两个列表合并为一个,并根据优先级C拆分重叠#

C# 将两个列表合并为一个,并根据优先级C拆分重叠#,c#,algorithm,sorting,merge,split,C#,Algorithm,Sorting,Merge,Split,我有两个优先级为1的列表和优先级为0的列表: 结果应该是: 我想将两个列表合并为一个具有检查优先级的列表。将在不拆分的情况下输入优先级行。但是可以拆分未优先级的行。假设计划的包含所有优先级为1的时段,并且注册的包含所有优先级为0的时段(这些时段被视为未优先级),假设你的时期在一个名为“代码>类时期的类中,假设优先级是一个可空的来表示结果图中的空白列(你的问题应该已经清楚地回答了所有这些),然后你可以在Calpult>:< /P>中定义一个帮助方法。 public class ClassPer

我有两个优先级为1的列表和优先级为0的列表:

结果应该是:


我想将两个列表合并为一个具有检查优先级的列表。将在不拆分的情况下输入优先级行。但是可以拆分未优先级的行。

假设
计划的
包含所有优先级为1的时段,并且
注册的
包含所有优先级为0的时段(这些时段被视为未优先级),假设你的时期在一个名为“代码>类时期的类中,假设优先级是一个可空的来表示结果图中的空白列(你的问题应该已经清楚地回答了所有这些),然后你可以在Calpult><代码>:< /P>中定义一个帮助方法。
public class ClassPeriod {
    public double From;
    public double To;
    public int? Priority;

    public bool ContainsFrom(ClassPeriod aCP) => From <= aCP.From && aCP.From < To;
    public bool ContainsTo(ClassPeriod aCP) => From < aCP.To && aCP.To <= To;
}
公共类类周期{
公共双起;
公共双到;
公共国际优先权;
公共bool包含From(类周期aCP)=>From{
var ans=新列表();
while(r.Froms.ContainsFrom(r)).Select(s=>s.To).DefaultIfEmpty(r.From).Max(),
To=Scheduled.Where(s=>s.ContainsTo(r)).Select(s=>s.From.DefaultIfEmpty(r.To).Min()
};
var nexts=已调度。其中(s=>pcp.ContainsFrom);
if(nexts.Any()){
var nextTo=nexts.Min(s=>s.From);
添加(新的类周期{From=pcp.From,To=nextTo});
r、 From=nextTo;
}
否则{
如果(pcp从cp.From).然后by(cp=>cp.To);

假设
计划的
包含所有优先级为1的时段,并且
已注册的
包含所有优先级为0的时段(这些时段被视为未优先级)假设你的时期在一个名为“代码>类时期的类中,假设优先级是一个可空的来表示结果图中的空白列(你的问题应该已经清楚地回答了所有这些问题),然后你可以在Calpult> < /C> >中定义一个帮助方法:

public class ClassPeriod {
    public double From;
    public double To;
    public int? Priority;

    public bool ContainsFrom(ClassPeriod aCP) => From <= aCP.From && aCP.From < To;
    public bool ContainsTo(ClassPeriod aCP) => From < aCP.To && aCP.To <= To;
}
公共类类周期{
公共双起;
公共双到;
公共国际优先权;
公共bool包含From(类周期aCP)=>From{
var ans=新列表();
while(r.Froms.ContainsFrom(r)).Select(s=>s.To).DefaultIfEmpty(r.From).Max(),
To=Scheduled.Where(s=>s.ContainsTo(r)).Select(s=>s.From.DefaultIfEmpty(r.To).Min()
};
var nexts=已调度。其中(s=>pcp.ContainsFrom);
if(nexts.Any()){
var nextTo=nexts.Min(s=>s.From);
添加(新的类周期{From=pcp.From,To=nextTo});
r、 From=nextTo;
}
否则{
如果(pcp从cp.From).然后by(cp=>cp.To);

发布一些您迄今为止尝试过的代码。您可以说“按优先级1计划,并按优先级0注册”,然后说“可以拆分未优先化的行”-是什么使行“未优先化”?所有的行都有一个优先级,在数据中可以是0或1。@NetMage我想说一个优先级为1的行。但是对海报来说:你的问题有两个部分,第一部分是提出一个算法来完成你想做的事情,第二部分是用C#编写。假设这是一个作业,你应该我自己设计算法,并尝试自己实现它,只有当你在这方面遇到困难时才在这里寻求帮助。嗨,NetMage,计划的总是第一优先。你的代码在很多情况下都能工作。但是我发现一个情况它不工作。嗨@NetMage,我还有另一个问题。你能帮我解决吗-发布一些您迄今为止尝试过的代码。您说“按优先级1计划,并按优先级0注册”,然后说“可以拆分未优先排序的行”-是什么使行“未优先排序”?所有的行都有一个优先级,在数据中可以是0或1。@NetMage我想说一个优先级为1的行。但是对海报来说:你的问题有两个部分,第一部分是提出一个算法来完成你想做的事情,第二部分是用C#编写。假设这是一个作业,你应该我自己设计算法,并尝试自己实现它,只有当你在这方面遇到困难时才在这里寻求帮助。嗨,NetMage,计划的总是第一优先。你的代码在很多情况下都能工作。但是我发现一个情况它不工作。嗨@NetMage,我还有另一个问题。你能帮我解决吗-嗨,NetMage,你的代码很好。但是有一个场景失败了。请帮我解决这个问题。检查这个。我有