110,538
社区成员
发帖
与我相关
我的任务
分享
int sum = 0;
for (int i = 2; i < list.length; i++)
{
if (list[i].month - 2 == list[i - 2].month)
{
int currentSum = list[i - 2].amount + list[i - 1].amount + list[i].amount;
if (currentSum > sum)
sum = currentSum;
}
}
int currentMonth = -1;
int currentSum = 0;
int sum = 0;
int repeatCount = 0;
for (int i = 0; i < list.count; i++)
{
var obj = list[i];
if (currentMonth == obj.month)
{
repeatCount++;
currentSum += obj.amount;
if (repeatCount >= 3 && currentSum > sum)
sum = currentSum;
}
else
{
currentMonth = obj.month;
repeatCount = 1;
currentSum = obj.amount;
}
}
//sum就是最后的结果了,要三个就把sum定义成int[3],一样的处理
static void Main(string[] args)
{
List<MyClass> lst = new List<MyClass>();
lst.Add(new MyClass() { month = 1, amount = 1 });
lst.Add(new MyClass() { month = 2, amount = 2 });
lst.Add(new MyClass() { month = 3, amount = 3 });
lst.Add(new MyClass() { month = 4, amount = 4 });
lst.Add(new MyClass() { month = 7, amount = 1 });
lst.Add(new MyClass() { month = 8, amount = 1 });
lst.Add(new MyClass() { month = 9, amount = 1 });
var query = from a in lst
from b in lst
from c in lst
where a.month == b.month - 1 && a.month == c.month - 2
orderby a.amount + b.amount + c.amount descending
select new
{
month = a.month + "," + b.month + "," + c.month,
amount = a.amount + b.amount + c.amount
};
foreach (var x in query) Console.WriteLine("{0} {1}", x.month, x.amount);
}
class MyClass
{
public int month { get; set; }
public int amount { get; set; }
}
static void Main(string[] args)
{
List<MyClass> lst = new List<MyClass>();
lst.Add(new MyClass() { month = 3, amount = 1 });
lst.Add(new MyClass() { month = 1, amount = 3 });
lst.Add(new MyClass() { month = 2, amount =4 });
lst.Add(new MyClass() { month = 5, amount = 4 });
lst.Add(new MyClass() { month = 7, amount = 4 });
lst.Add(new MyClass() { month = 8, amount = 4 });
lst.Add(new MyClass() { month = 9, amount = 4 });
int i = 0;
var orderlst = lst.OrderBy(p => p.month);
var b= orderlst.Aggregate(new temp(), (temp, v) =>
{
if(temp.tempvalue.HasValue)
{
if (v.month - temp.tempvalue == 1)
{
temp.tempvalue = v.month;
temp.lstfirst.Add(v);
if (temp.lstfirst.Count() >= 3)
{
if (temp.lstfirst.Sum(p => p.amount) >= temp.res.Sum(p => p.amount))
{
temp.res = new List<MyClass>(temp.lstfirst);
}
}
}
else
{
temp.tempvalue = v.month;
temp.lstfirst.Clear();
temp.lstfirst.Add(v);
}
}
else
{
temp.tempvalue = v.month;
temp.lstfirst.Add(v);
}
return temp;
});
}
public class temp
{
public int? tempvalue { get; set; }
public List<MyClass> lstfirst { get; set; }
public List<MyClass> res { get; set; }
public temp()
{
lstfirst = new List<MyClass>();
res = new List<MyClass>();
}
}
internal class MyClass
{
public int month { get; set; }
public int amount { get; set; }
}