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


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


  • 相关阅读:
    【React Native】某个页面禁用物理返回键
    【React Native】DeviceEventEmitter监听通知及带参数传值
    转载【React Native代码】手写验证码倒计时组件
    【React Native】 中设置 APP 名称、应用图标、为安卓添加启动图
    【React Native错误集】* What went wrong: Execution failed for task ':app:installDebug'.
    【React Native错误集】Import fails with "Failed to execute 'ImportScripts' on 'WorkerGlobalScope'"
    【React Native错误集】Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of app
    「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)
    【React Native】Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml
    坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
  • 原文地址:https://www.cnblogs.com/ybhcolin/p/1838103.html
Copyright © 2011-2022 走看看