zoukankan      html  css  js  c++  java
  • 智力逻辑题程序实现(密码单词)

    原题:     

    某一密码仅使用KLMNO5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

        (1 密码单词的最小长度是两个字母,可以相同,也可以不同

        (2 K不可能是单词的第一个字母

        (3 如果L出现,则出现次数不止一次

        (4 M不能使最后一个也不能是倒数第二个字母

        (5 K出现,则N就一定出现

        (6 O如果是最后一个字母,则L一定出现

    问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

    A) K   B)L   C) M    D) N

    问题二:如果能得到的字母是KLM,那么能够形成的两个字母长的密码单词的总数是多少?

    A)1 B)3 C)6 D9

    问题三:下列哪一个是单词密码?

    A) KLLN   B) LOML   C) MLLO   D)NMKO

    问题四:3个相同的字母可以构成的不同密码单词的总数是多少?

    A) 1   B)2   C) 3   D) 4

    问题五:单词密码MMLLOKN可以通过下列变成另一个密码单词,除了:

    A) N代替每个L    B)O代替每一个M    C)O代替    D)O移到N的左边

    从题干与问题我们不难得出一个结论: 求解某个字符串(遵循规则下的字符串)是否属于密码单词. 对于每个问题,我们都可以得出需要判断的字符串.

    思路: 首先我们先写一个遵循以上规则的字符串的判断函数. 然后再根据每个问题判断出对应的字符串,最后得出每个问题的结论.

     1  private static bool CheckStr(string str)
     2         {
     3             char[] ar = str.ToCharArray();
     4             //密码单词的最小长度是两个字母,可以相同,也可以不同
     5             if (ar.Length < 2)
     6             {
     7                 return false;
     8             }
     9             //K不可能是单词的第一个字母
    10             if (ar[0== 'K')
    11             {
    12                 return false;
    13             }
    14             //如果L出现,则出现次数不止一次
    15             if (str.Contains("L"))
    16             {                
    17                 int Count = 0;
    18                 for (int i = 0; i < ar.Length; i++)
    19                 {
    20                     if (ar[i] == 'L')
    21                     {
    22                         Count++;
    23                     }
    24                 }
    25                 if (Count < 2)
    26                 {
    27                     return false;
    28                 }
    29             }
    30             //M不能使最后一个也不能是倒数第二个字母
    31             if (ar[ar.Length - 1== 'M' || ar[ar.Length - 2== 'M')
    32             {
    33                 return false;
    34             }
    35             //K出现,则N就一定出现
    36             if (str.Contains("K"))
    37             {
    38                 if (!str.Contains("L"))
    39                 {
    40                     return false
    41                 }
    42             }
    43             //O如果是最后一个字母,则L一定出现
    44             if (ar[ar.Length - 1== 'O')
    45             {
    46                 if (!str.Contains("L"))
    47                 {
    48                     return false;
    49                 }
    50             }
    51             return true;
    52         }


    针对问题一,我们可以得出需要判断的字符串 LOK,LOL,LOM,LON

     1 static void Main(string[] args)
     2         {
     3             string[] Str = { "LOK""LOL""LOM""LON" };
     4 
     5             forint i  = 0 ; i<  Str.Length ; i++)
     6             {
     7                 if (CheckStr(Str[i]))
     8                 {
     9                     Console.WriteLine(Str[i] + " OK");
    10                 }
    11                 else
    12                 {
    13                     Console.WriteLine(Str[i] + " Error"); 
    14                 }
    15             }
    16         }


    第二个问题需要判断的字符串:  KK,LL,MM,KL,LK,KM,MK,LM,ML

    第三个问题需要判断的字符串:  KLLN,LOML,MLLO,NMKO

    第四个问题需要判断的字符串:  KKK,LLL,MMM,OOO,NNN

    第五个问题需要判断的字符串:  MMNNOKN,OOLLOKN,OOOOOOO,MMLLNOK


    以下问题都类似于第一个问题处理.


  • 相关阅读:
    [ solr入门 ] 在schema.xml中加入自己的分词工具
    SQLServer2005获取大数据集时内存不足的解决办法[转]
    java位操作基本教程[转]
    log4j的最佳实践(转)
    [ lucene扩展 ] "Did you mean" feature with Apache Lucene SpellChecker
    java image filters[02]过滤器初探
    PHP serialize 和 JSON 解析与区别
    js 实现 静态缓存页面中访问动态IP下载地址
    smarty section foreach遍历多维数组
    【转】window.open 参数
  • 原文地址:https://www.cnblogs.com/ybhcolin/p/1838103.html
Copyright © 2011-2022 走看看