某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则: 
(1)密码单词的最小长度是两个字母,可以相同,也可以不同
(2)K不可能是单词的第一个字母
(3)如果L出现,则出现次数不止一次
(4)M不能是最后一个也不能是倒数第二个字母
(5)K出现,则N就一定出现
(6)O如果是最后一个字母,则L一定出现编写程序实现如下功能:
(1)输出全部符合该要求的2个字符的密码单词;
(2)从键盘获得单词,判断该单词是否符合密码单词规则

解决方案 »

  1.   

    1、char[] chr=new char[5]{K,L,M,N,O};
    条件1:最小两个字母且可以相同,条件2:K不为第一个,问题是只要输出2个字符的!那么K就在后面!条件3,如果有L那L就出现2次或2次+,那么如果中间有L,那么按题目要求就只能是LL,条件4,M不能为倒数第2和第1,那根本就不符合题目,不会出现M,不然M为第1个也就是倒数第2个!条件5,K出现则N出现,综合条件2,那就只有NK这一个组合,条件6:O如果是最后一个字母,则L出现,那么按题目来的话,O只能为第一个,且最后一个不能为M,L,K,也就是只有ON;综合条件:只有N没有限制前后
    第一个字母不能为:K,M ,只能为L,N,O
    最后一个字母不能为:O,M,只能为K,L,N
    L出现则不只一次,那么只有LL时才符合题目,只有一个组合方法。
    如果L为第一或最后,组合为 LL
    如果N第一或最后,组合为 NK,NN 
    如果O为第一,组合为 ON算出来了就好写了!Console.Write("LL,NK,NN,ON");2、不知道第二题是否随着第1题来的!如果是就判断键盘输入与第一题的结果是否相符!
    if(Keycode==keys.M)
    {
          messgebox.show....
    }