zoukankan      html  css  js  c++  java
  • if 循环的深入理解 哈希表的一种应用

       哈希表的值作为一个颜色容器,值默认为标识1, 表示未曾用过,若用过标识为0;
     1: 程序第一步    遍历哈希表,查找标识为1 未曾用过的颜色
    我用了这个:
    string colorno_use="";

    foreach (string key in ht.Keys)
    {

    if(Convert.ToInt32(ht[key])==1)  //这个结果导致 所有为1的主键 都被循环了。 当然导致了后边的程序错乱问题。 
    {
    colorno_use = key;
    ht[key] = 0;
    ++i;
    break;
    }

    }

    于是我改进了一下: 加了一个i 限制判断循环的条件 结果正常了:

    int i=0;

    foreach (string key in ht.Keys)
    {

    if(Convert.ToInt32(hashtable[key])==1&&i==0)
    {
    colorno_use = key;
    hashtable[key] = 0;
    ++i;
    break;
    }
    }

    更简便的方法就是本来想把大括弧去掉 :if没有大括弧下边有两句以上是运行一次,进入下一条语句。结果呢在此处不合适,调试了一下,因为foreach 管辖范围广,导致if 执行之后又进入了forech 然后又是if ,在此还是上边加限制的方法最为合适。

     
               Hashtable ht = new Hashtable();
                ht.Add("PaleTurquoise", 1);
                ht.Add("Aqua", 1);
                ht.Add("CornflowerBlue", 1);
                ht.Add("Yellow", 1);
                ht.Add("Chocolate", 1);
                ht.Add("RosyBrown", 1);
                ht.Add("Orange", 1);
                ht.Add("LightGray", 1);
                ht.Add("LimeGreen", 1);
                ht.Add("Magenta", 1);
                ht.Add("DarkSalmon", 1);
                foreach (DictionaryEntry key in ht)
                    if (Convert.ToInt32(key.Value) == 1)
                        return key.Key;
                return null;
  • 相关阅读:
    Tips(持续跟新)
    icpc 2018 徐州 网络赛 B 博弈+记忆化搜索
    2018 徐州 icpc 网络赛 A 递推or数学公式
    2018 徐州icpc网络赛 G 分块
    HDU 3092 Least common multiple(完全背包+思维)
    hdu 4747(DP?线性递推)
    Pell-方程学习小结
    C++中map的介绍用法以及Gym题目:Two Sequences
    求最长上升子序列和最长非下降子序列
    dfs+枚举,flip游戏的拓展POJ2965
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/5602458.html
Copyright © 2011-2022 走看看