2010-03-15 15 views
8

Estoy tratando de crear la matriz a continuación en mi vb.net, así que durante el procesamiento puedo obtener las puntuaciones de los partidos de los alfabetos, por ejemplo: ¿Cuál es la coincidencia para A y N ?, lo haré mira en mi matriz incorporada y devuelve -2 Del mismo modo, ¿cuál es la coincidencia para P y L ?, voy a mirar en mi matriz incorporada y devolver -3Estructura de datos mejor y más simple

Por favor sugiero cómo hacerlo, estaba tratando de utilizar el diccionario anidada como esto:

Dim myNestedDictionary As New Dictionary(Of String, Dictionary(Of String, Integer))() 
Dim lTempDict As New Dictionary(Of String, Integer) 
lTempDict.Add("A", 4) 
myNestedDictionary.Add("A", lTempDict) 

la otra forma se podría ser leer la matriz de un archivo basado en texto y luego llenar los dos Dimens matriz ional

Gracias.

alt text http://www.clcbio.com/scienceimages/img8.png

+0

¿Le importaría compartir con nosotros para qué va a utilizar esto? – chakrit

Respuesta

5

Creo que sería más sencillo usar un diccionario no anidado con teclas de dos caracteres.

myDictionary.add("AA", 4) 
+0

+1 Estaba a punto de sugerir esto. –

+0

Mismo pensamiento aquí. – chakrit

+0

En el camino correcto, pero dado el tamaño de los datos, creo que una SortedList podría ser mejor. –

3

utilizar una matriz de dos dimensiones y crear una asignación para su alfabeto como una enumeración que también servirá como un índice en las matrices:

public enum AlphaBet 
{ 
    A = 0, 
    R = 1, 
    ... 
} 

// Init the array 
int[][] scores = ...; 

int score = scores[AlphaBet.A][AlphaBet.N]; // score = -2 
+1

¿Por qué crear una enumeración en lugar de simplemente usar 'char' como clave? –

+0

@Frederic - No sigo. ¿Cómo usarías 'char' como clave? – Oded

+0

Supongo que es porque hay una cantidad limitada de caracteres que se utilizan. Construir una matriz que cubra todos los caracteres de A-Z consumiría demasiada memoria. La alternativa entonces es usar un enfoque de búsqueda indexada, almacenando solo índices de los caracteres que se usan, pero luego ... eso es precisamente lo que ofrece Enum. – chakrit

1

tomar un diccionario que mapea char a int . los ints deben ser secuenciales. luego toma 2d array, eso es todo. primero busca en el diccionario el índice para ambos caracteres y luego vaya al arreglo

Cuestiones relacionadas