数组之间转换的一个算法(C#)
2007-12-10 20:27
274 查看
最近手上一个物料管控项目遇到这样一个问题。如果拆解手机A中零件,然后来组装手机B,这个过程中拆下A手机的零件有一部份可能在组装B手机的时候需要用到,但有一部份,组装B手机只能从仓库重新领过,还有被拆下A的手机部分零件B是不需要的,所以要退还仓库。
问题大概如此,现在将问题转换为数组,在拆A手机时候拆下的零件如下记录形式
拆解下来的物料表A
要组装的B手机需要的物料表
我们先利用二维数组AA存储A物料表的信息,BB数组存储B物料表的信息,然后写个算法,得到如下CC数组。
设计算法如下:
public bool FindStingArray(string [,] AA,string straa)
...{
int k=0;
for (int i=0;i<AA.GetLength(0);i++)
...{
if (AA[i,1]!=straa)
...{
k++;
}
}
if(k==AA.GetLength(0))
...{
return false;
}
else
...{
return true;
}
}
public void ConvertArray(string [,] AA,string [,] BB,string [,] CC)
...{
int k=0;
for (int i=0;i<AA.GetLength(0);i++)
...{
//如果AA[i,1]在BB数组中
if (FindStingArray(BB,AA[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=AA[i,1];
CC[k,2]=AA[i,2];
CC[k,3]=AA[i,3];
k++;
}
}
for (int i=0;i<BB.GetLength(0);i++)
...{
//如果BB[i,1]不在AA数组中
if (!FindStingArray(AA,BB[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=BB[i,1];
CC[k,2]=BB[i,2];
CC[k,3]=BB[i,3];
k++;
}
}
for (int i=0;i<AA.GetLength(0);i++)
...{
//如果AA[i,1]不在BB数组中
if (!FindStingArray(BB,AA[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=AA[i,1];
CC[k,2]=AA[i,2];
CC[k,3]=AA[i,3];
k++;
}
}
}
问题大概如此,现在将问题转换为数组,在拆A手机时候拆下的零件如下记录形式
拆解下来的物料表A
序号index | 料号id | 料号name | 用量 |
1 | 100504 | 按键 | 4 |
2 | 300456 | 前盖 | 1 |
3 | 400153 | 后盖 | 1 |
序号index | 料号id | 料号name | 用量 |
1 | 100504 | 按键 | 4 |
2 | 400153 | 后盖 | 1 |
3 | 500145 | 电池 | 1 |
4 | 600157 | 棉花泡子 | 2 |
5 | 600183 | 天线 | 1 |
序号index | 料号id | 料号name | 用量 |
1(A,B共有) | 100504 | 按键 | 4 |
2(A,B共有) | 400153 | 后盖 | 1 |
3(B有A没有) | 500145 | 电池 | 1 |
4(B有A没有) | 600157 | 棉花泡子 | 2 |
5(B有A没有) | 600183 | 天线 | 1 |
6(A有B没有) | 400153 | 后盖 | 1 |
public bool FindStingArray(string [,] AA,string straa)
...{
int k=0;
for (int i=0;i<AA.GetLength(0);i++)
...{
if (AA[i,1]!=straa)
...{
k++;
}
}
if(k==AA.GetLength(0))
...{
return false;
}
else
...{
return true;
}
}
public void ConvertArray(string [,] AA,string [,] BB,string [,] CC)
...{
int k=0;
for (int i=0;i<AA.GetLength(0);i++)
...{
//如果AA[i,1]在BB数组中
if (FindStingArray(BB,AA[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=AA[i,1];
CC[k,2]=AA[i,2];
CC[k,3]=AA[i,3];
k++;
}
}
for (int i=0;i<BB.GetLength(0);i++)
...{
//如果BB[i,1]不在AA数组中
if (!FindStingArray(AA,BB[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=BB[i,1];
CC[k,2]=BB[i,2];
CC[k,3]=BB[i,3];
k++;
}
}
for (int i=0;i<AA.GetLength(0);i++)
...{
//如果AA[i,1]不在BB数组中
if (!FindStingArray(BB,AA[i,1]))
...{
CC[k,0]=(k+1).ToString();
CC[k,1]=AA[i,1];
CC[k,2]=AA[i,2];
CC[k,3]=AA[i,3];
k++;
}
}
}
相关文章推荐
- C# 对象、文件与二进制串(byte数组)之间的转换
- C# 16进制与字符串、字节数组之间的转换
- C# 16进制与字符串、字节数组之间的转换
- C# 中的类型转换之字符串和字符数组之间的转换
- C# 16进制与字符串、字节数组之间的转换
- c#怎么将string隐式转换为char C#中char[]与string之间的转换 C# list与数组转换
- C#中如何将一个string数组转换为int数组
- C#中List〈string〉和string[]数组之间的相互转换
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
- C# 16进制与字符串、字节数组之间的转换
- C# 16进制与字符串、字节数组之间的转换
- C# 16进制与字符串、字节数组之间的转换
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- c#中如何将一个string数组转换为int数组
- C# 16进制与字符串、字节数组之间的转换
- C# 16进制与字符串、字节数组之间的转换
- 需要这样一个记录本-7 C#字符串与字节数组相互转换
- C# 16进制与字符串、字节数组之间的转换
- C# 16进制与字符串、字节数组之间的转换(转)
- C# 16进制与字符串、字节数组之间的转换