110,534
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
int[] data1 = { 1, 5, 2, 5, 3, 4, 4, 6 };
dt.Columns.AddRange(new DataColumn[] { new DataColumn("T"), new DataColumn("V") });
for (int i = 0; i < data1.Length / 2; i++)
{
var r = dt.NewRow();
r["T"] = data1[i * 2];
r["V"] = data1[i * 2 + 1];
dt.Rows.Add(r);
}
int temp = 4; // 8, 11
if (dt.Rows.Cast<DataRow>().Sum(x => Convert.ToInt32(x["V"])) < temp)
throw new Exception("数据不够 temp");
var data = dt.Rows.Cast<DataRow>()
.Select(x => new { T = Convert.ToInt32(x["T"]), V = Convert.ToInt32(x["V"]) })
.Select(x => {
if (x.V >= temp)
{
return new { T = x.T, V = x.V - temp };
}
else
{
temp -= x.V;
return new { T = x.T, V = 0 };
}
}).ToList();
var result = string.Join("; ", data.Take(data.Select((x, i) => new { x.V, i }).First(x => x.V != 0 || x.i == dt.Rows.Count - 1).i + 1).Select(x => x.T + ", " + x.V)) + ";";
Console.WriteLine(result);
}
}
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
int[] data = { 1, 5, 2, 5, 3, 4, 4, 6 };
dt.Columns.AddRange(new DataColumn[]
{ new DataColumn("T"), new DataColumn("V") });
for (int i = 0; i < data.Length / 2; i++)
{
var r = dt.NewRow();
r["T"] = data[i * 2];
r["V"] = data[i * 2 + 1];
dt.Rows.Add(r);
}
int temp = 4; // 8, 11
int v = 0;
int index = 0;
for (int i = -1; i < dt.Rows.Count - 1; i++)
{
v += i == -1 ? 0 : Convert.ToInt32(dt.Rows[i]["V"]);
if (v + Convert.ToInt32(dt.Rows[i + 1]["V"]) >= temp)
{
index = i;
v = v + Convert.ToInt32(dt.Rows[i + 1]["V"]) - temp;
goto label1;
}
}
index = dt.Rows.Count - 2;
v = v + Convert.ToInt32(dt.Rows[dt.Rows.Count - 1]["V"]) - temp;
label1:
string result = string.Join("; ", dt.Rows.Cast<DataRow>().Take(index + 1).
Select(x => x["T"] + ", " + "0"))
+ (index == -1 ? "" : "; ") + dt.Rows[index + 1]["T"] + ", " + v + ";";
Console.WriteLine(result);
}
}
}