题解 | #24点运算#

24点运算

http://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d

首先对输入的字符串进行一个Byte一个Byte的处理,处理时先识别是否为大小王,如果是大小王,则输出ERROR结束程序,如果不是则将当前字节存入信息缓存,(此处有2个小细节,识别字符时通过同时识别下一字节是否为O来将J和JOKER加以区分,并且将10简化为1,从而简化字符识别逻辑),处理完字符串后,我们将获得4个字符。将获得的字符进行顺序排列,获得24个排列组合。根据题设条件,对4个扑克元素会进行3次运算操作,因此从+=/中提取任意3个元素,每次运算操作可能是3种提取出来的算符中的任意一种,因此运算符的顺序排列组合有C(4,3)333=108种。将24个扑克元素的排列组合逐一遍历108种算符组合,就可以保证题设条件下的运算组合没有遗漏了。在24*108的遍历过程中,运算时通过另外的程序将扑克元素转化成对应的数值,并将根据算符的顺序逐一进行计算,一旦发现运算结果为24,则按顺序输出扑克元素和算符的顺序组合。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务