C # -hduoj-1004-deja que el globo se eleve

http://acm.hdu.edu.cn/showproblem.php?pid=1004

Use un diccionario para contar el número de ocurrencias de cada cadena.

Entrada :

Hay varios casos. La primera línea de cada caso es un número entero n, lo que indica que hay n líneas debajo y cada línea tiene n cadenas.

Cuando n es 0, significa que el caso ha terminado.

Salida:

Para cada caso, genere la cadena con la mayor cantidad de apariciones.

 

Puntos clave:

1. Utilice una tabla hash para almacenar el número de veces que corresponde la cadena. Si se usa una tabla de secuencia, la complejidad del tiempo es aproximadamente o (n * n) y la velocidad es lenta.

2 、 字典 定义 。Diccionario <cadena, int> cuenta_color = nuevo Diccionario <cadena, int> ();

Su esencia es una tabla hash.

3. Determine si existe una clave en el diccionario.

if (cuenta_color.ContainsKey (color))

{

}

4. El valor correspondiente a la clave se incrementa en 1. color_count [color] + = 1;

5. Encuentra la clave con el valor más grande.

int max_val = 0;
                string max_color = "";
                foreach (KeyValuePair <string, int> kvp en color_count)
                {                     if (kvp.Value> max_val)                     {                         max_val = kvp.Value;                         max_color = kvp.Key;                     }                 }                 Console.WriteLine (max_color);






El código completo es el siguiente:

using System;
using System.Collections.Generic;

namespace test
{
    class Program
    {
        
        static void Main(string[] args)
        {
            while (true)
            {

                string s = Console.ReadLine();
                int x = int.Parse(s);//输入共有多少行   
                if (x == 0)
                    return;

                Dictionary<string, int> color_count = new Dictionary<string, int>();

                for (int i = 0; i < x; i++)
                {
                    string color = Console.ReadLine();


                    if (color_count.ContainsKey(color))
                    {
                        color_count[color] += 1;
                    }
                    else
                    {
                        color_count[color] = 1;
                    }

                }
                int max_val = 0;
                string max_color="";
                foreach (KeyValuePair<string, int> kvp in color_count)
                {
                    if(kvp.Value>max_val)
                    {
                        max_val = kvp.Value;
                        max_color = kvp.Key;
                    }
                }
                Console.WriteLine(max_color);
            }



        }
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43917370/article/details/108062561
Recomendado
Clasificación