J'ai une liste de sous-listes avec numéro indexé apparié et sa valeur binaire. Par exemple:Faire la liste des numéros de paired en C#
Variable Value
route.x[0,0] 0
route.x[0,1] 1
route.x[0,2] 0
route.x[0,3] 0
route.x[1,0] 0
route.x[1,1] 0
route.x[1,2] 0
route.x[1,3] 1
route.x[2,0] 0
route.x[2,1] 0
route.x[2,2] 0
route.x[2,3] 0
route.x[3,0] 0
route.x[3,1] 0
route.x[3,2] 1
route.x[3,3] 0
Si la valeur de route.x[i,j]
est 1
, puis faire une nouvelle liste qui contient ce numéro dans l'ordre. Pour cet exemple, la nouvelle liste sera: route = 0 1 3 2
Jusqu'à présent, j'ai fait ce code:
//find optimal route
var route = new List<List<int>>();
for (int j = 0; j < C+1; ++j)
{
if (routeopt.x[0, j] != 1)
continue;
List<int> subroute = new List<int>();
subroute.Add(0);
subroute.Add(j);
route.Add(subroute);
}
résultat de ce code est route = 0 1
. Après cela, j'utilise ce code pour ajouter un nouveau numéro (3
et 2
).
for (int i = 1; i < C+1; ++i)
{
for (int j = 1; j < C+1; j++)
{
if (routeopt.x[i, j] == 1)
{
List<int> targetlist = route.Single(r => r.Contains(i));
targetlist.Add(j);
}
}
}
Ce code est travaillé si seulement j'ai une route.x [i, j] avec la valeur 1 en nombre ordonné. Mais si ce n'est pas commandé, par exemple (je montre seule variable avec la valeur 1):
Variable Value
route.x[0,4] 1
route.x[0,3] 1
route.x[4,1] 1
route.x[1,2] 1
Il devrait être route = 0 3
et route = 0 4 1 2
. Mais il a montré Sequence contains no matching element
parce que l'index 1
n'est pas contenu dans route = 0 3
ou route = 0 4
. Comment gérer ce problème? Merci