一个 Int 类型 矩阵T[k ,n]:
例如:
T11 T12......T1n-1 T1n
T21 T22......T2n-1 T2n
.. .. .. ..
Tk1 Tk2......Tkn-1 Tkn另一个 Datetime 类型 矩阵D[k],D1
D2
..
Dk
例如:
2008-5-21
2008-6-14
2008-4-23 我想要达到的目的: En[k] = D[k]- [T1n,T2n,T3n...Tkn]
利用上式求 En-1[k] = En[k]-[T1n-1,T2n-1,T3n-1...Tkn-1]
最后把 En[k]、En-1[k]...E1[k] 组合 得出一个 Datetime 类型 矩阵 E[k,n]研究好久没研究出来~~~望XDJMM给出代码
请写出代码~~~谢谢
例如:
T11 T12......T1n-1 T1n
T21 T22......T2n-1 T2n
.. .. .. ..
Tk1 Tk2......Tkn-1 Tkn另一个 Datetime 类型 矩阵D[k],D1
D2
..
Dk
例如:
2008-5-21
2008-6-14
2008-4-23 我想要达到的目的: En[k] = D[k]- [T1n,T2n,T3n...Tkn]
利用上式求 En-1[k] = En[k]-[T1n-1,T2n-1,T3n-1...Tkn-1]
最后把 En[k]、En-1[k]...E1[k] 组合 得出一个 Datetime 类型 矩阵 E[k,n]研究好久没研究出来~~~望XDJMM给出代码
请写出代码~~~谢谢
解决方案 »
- 如何保存用户自定义显示的列
- c#字符串如何转换成字符串数组?比如"abcdef"成 string[] s={"ab","cd","ef"}
- SQL 创建数据库?
- IE里面XMLHTTP的Open方法传递AD帐号
- Control.Leave 事件 与 Control.LostFocus 事件 区别
- 用C#生成XML文档的问题 在线等 急~~~
- c#操做sybase的问题请帮忙解决
- 打包,安装部署问题?紧急求救!!!!!!!!!!
- C#怎么读取以rep为后缀的文件
- 跳转按钮
- 求在产品采购单中的子表DataGridView中显示产品信息(名称/描述/单位...)的代码
- 要怎么写个可以实现有增删改查方法的类
例如:
1 2 3 4
8 4 5 5
9 7 1 3另一个 Datetime 类型 矩阵D[k],
例如:
2008-5-21
2008-6-14
2008-4-23 我想要达到的目的:用矩阵D 减 矩阵T中的最后一列,得到的结果 再减去 矩阵T 中的倒数第二列 如此直道矩阵T的第一列,例如:
2008-5-21 4 2008-5-17 3 2008-5-14
2008-6-14 减去 5 等于 2008-6-9 再减去 5 等于 2008-6-4
2008-4-23 3 2008-4-20 1 2008-4-19一直到矩阵T第一列最后,把得到的时间值 组成 一个 二维矩阵 E[,]
例如: 倒数第二列 最后一列
......2008-5-17 2008-5-14
......2008-6-9 2008-6-4
..... 2008-4-20 2008-4-19
static void Main(string[] args)
{
int[,] a = { { 1, 2, 3, 4 }, { 8, 4, 5, 5 }, { 9, 7, 1, 3 } };
DateTime[] b = { DateTime.Parse("2008-5-21"), DateTime.Parse("2008-6-14"), DateTime.Parse("2008-4-23") };
DateTime[,] d = GetDateTime(a, b);
IEnumerator ie = d.GetEnumerator();
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (j == 3)
Console.WriteLine(d[i, j].ToShortDateString());
else
Console.Write(d[i, j].ToShortDateString() + " ");
}
}
} static DateTime[,] GetDateTime(int[,] T, DateTime[] D)
{
DateTime[,] d = new DateTime[T.GetUpperBound(0)+1,T.GetUpperBound(1)+1];
if (D.LongLength != T.GetUpperBound(0) + 1)
return null;
else
{
for (int i = 0; i < T.GetUpperBound(0) + 1; i++)
{
for (int j = 0; j < T.GetUpperBound(1) + 1; j++)
{
if (j == 0)
d[i, j] = D[i].AddDays(-T[i, T.GetUpperBound(1) - j]);
else
d[i, j] = d[i, j - 1].AddDays(-T[i, T.GetUpperBound(1) - j]);
}
}
return d;
}
}
输出结果为
2008-5-17 2008-5-14 2008-5-12 2008-5-11
2008-6-9 2008-6-4 2008-5-31 2008-5-23
2008-4-20 2008-4-19 20084-12 2008-4-3
{
static int [,] T =
{
{ 1, 2, 3, 4 },
{ 8, 4, 5, 5 },
{ 9, 7, 1, 3 },
}; static DateTime [] D =
{
DateTime.Parse("2008-5-21"),
DateTime.Parse("2008-6-14"),
DateTime.Parse("2008-4-23"),
};
static DateTime [,] E;
static void Main()
{
int k = T.GetLength(0);
int n = T.GetLength(1);
if (D.Length != k)
{
Console.WriteLine("矩阵维数不正确!");
return;
}
E = new DateTime [k, n];
for (int i = 0; i < k; i++)
{
for (int j = n - 2; j >= 0; j--)
{
T[i, j] += T[i, j + 1];
}
for (int j = 0; j < n; j++)
{
E[i, j] = D[i].AddDays(-T[i, j]);
Console.Write("{0:yyyy-MM-dd} ", E[i, j]);
}
Console.WriteLine();
}
}
}
/* 程序输出:
2008-05-11 2008-05-12 2008-05-14 2008-05-17
2008-05-23 2008-05-31 2008-06-04 2008-06-09
2008-04-03 2008-04-12 2008-04-19 2008-04-20
*/
这句没用
利用上式求 En-1[k] = En[k]-[T1n-1,T2n-1,T3n-1...Tkn-1]
最后把 En[k]、En-1[k]...E1[k] 组合 得出一个 Datetime 类型 矩阵 E[k,n] 一致吗?解决的思路大概为:将矩阵T[k ,n]放在二维数组中,将 矩阵D[k]放在一维数组中,利用多重循环根据表达式用下标取数进行计算