c#算法例子

1,计算几个区间是否重叠

有几组数据,满足以下条件:
每组数据有最大和最小值,且必须有一个最大或一个最小

var tempNum = 0.001m;
var maxNum = request.AutoOpenOrderCondition.Max(s => s.MaxPurchasePrice ?? 0) + tempNum;
var minNum = request.AutoOpenOrderCondition.Max(s => s.MinPurchasePrice ?? 0) - tempNum;
var qujian = request.AutoOpenOrderCondition.Select(s => new Tuple<decimal, decimal>(HandleValueByCompareType(s.MinPurchasePriceCompareType, s.MinPurchasePrice ?? minNum, tempNum), HandleValueByCompareType(s.MaxPurchasePriceCompareType, s.MaxPurchasePrice ?? maxNum, -tempNum))).ToList();
for (int i = 0; i < qujian.Count - 1; i++)
{
var itema = qujian[i];
for (int j = i + 1; j < qujian.Count; j++)
{
var itemb = qujian[j];
if (!(itema.Item2 < itemb.Item1 || itema.Item1 > itemb.Item2))
{
throw CommonFaultFactory.CreateFault("自动开单条件采购单价重叠", "SaveCentralizedPurchasingSetOpenOrderRules");
}
}
}

 

decimal HandleValueByCompareType(string compareType, decimal value, decimal t = 0.001m)
{
switch (compareType)
{
case "<":
return value + t;
case "<=": return value;
}

return value;
}

posted @   元点  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示