最近手上一个物料管控项目遇到这样一个问题。如果拆解手机A中零件,然后来组装手机B,这个过程中拆下A手机的零件有一部份可能在组装B手机的时候需要用到,但有一部份,组装B手机只能从仓库重新领过,还有被拆下A的手机部分零件B是不需要的,所以要退还仓库。
问题大概如此,现在将问题转换为数组,在拆A手机时候拆下的零件如下记录形式
拆解下来的物料表A
序号index
|
料号id
|
料号name
|
用量
|
1
|
100504
|
按键
|
4
|
2
|
300456
|
前盖
|
1
|
3
|
400153
|
后盖
|
1
|
要组装的B手机需要的物料表
序号index
|
料号id
|
料号name
|
用量
|
1
|
100504
|
按键
|
4
|
2
|
400153
|
后盖
|
1
|
3
|
500145
|
电池
|
1
|
4
|
600157
|
棉花泡子
|
2
|
5
|
600183
|
天线
|
1
|
我们先利用二维数组AA存储A物料表的信息,BB数组存储B物料表的信息,然后写个算法,得到如下CC数组。
序号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;
}
}
... {
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++;
}
}
}
... {
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++;
}
}
}