忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1098 | 回复: 1

这个算24点的程序的bug是? [复制链接]

论坛徽章:
0
发表于 2018-07-27 15:01 |显示全部楼层
  1. #算24点程序
  2. #use strict;use warnings;use diagnostics;
  3. use strict;
  4. my $a=9;
  5. my $b=9;
  6. my $c=4;
  7. my $d=3;
  8. #利用穷举法,列出abcd四个变量之间所有的各种排列
  9. &cacu($a,$b,$c,$d);
  10. &cacu($a,$b,$d,$c);
  11. &cacu($a,$c,$b,$d);
  12. &cacu($a,$c,$d,$b);
  13. &cacu($a,$d,$b,$c);
  14. &cacu($a,$d,$c,$b);
  15. &cacu($b,$a,$c,$d);
  16. &cacu($b,$a,$d,$c);
  17. &cacu($b,$c,$a,$d);
  18. &cacu($b,$c,$d,$a);
  19. &cacu($b,$d,$a,$c);
  20. &cacu($b,$d,$c,$a);
  21. &cacu($c,$a,$b,$d);
  22. &cacu($c,$a,$d,$b);
  23. &cacu($c,$b,$a,$d);
  24. &cacu($c,$b,$d,$a);
  25. &cacu($c,$d,$a,$b);
  26. &cacu($c,$d,$b,$a);
  27. &cacu($d,$a,$b,$c);
  28. &cacu($d,$a,$c,$b);
  29. &cacu($d,$b,$a,$c);
  30. &cacu($d,$b,$c,$a);
  31. &cacu($d,$c,$a,$b);
  32. &cacu($d,$c,$b,$a);
  33. #子函数,利用三重循环计算abcd位置不变的时候的所有可能,
  34. #四个数之间只可能有三种运算符,加括号只可能有五种可能.
  35. sub cacu
  36. {
  37.     my ($a,$b,$c,$d)=@_;
  38.     my @op=("+","-","*","/");#运算符数组
  39.     my $x;my $y;my $z;
  40.     my $str1;my $str2;my $str3;my $str4;my $str5;
  41.     foreach $x (@op)#第一个运算符
  42.     {
  43.         foreach $y (@op)#第二个运算符
  44.         {
  45.             foreach $z (@op)#第三个运算符
  46.             {
  47.                 $str1="(($a$x$b)$y$c)$z$d";
  48.                 $str2="($a$x$b)$y($c$z$d)";
  49.                 $str3="($a$x($b$y$c))$z$d";
  50.                 $str4="$a$x(($b$y$c)$z$d)";
  51.                 $str5="$a$x($b$y($c$z$d))";
  52.                 if(abs(eval($str1)-24)<0.000001){print $str1 . "=24\n";}
  53.                 if(abs(eval($str2)-24)<0.000001){print $str2 . "=24\n";}
  54.                 if(abs(eval($str3)-24)<0.000001){print $str3 . "=24\n";}
  55.                 if(abs(eval($str4)-24)<0.000001){print $str4 . "=24\n";}
  56.                 if(abs(eval($str5)-24)<0.000001){print $str5 . "=24\n";}
  57.             }
  58.         }
  59.     }
  60. }
复制代码
把第三行
use strict;

换成
use strict;use warnings;use diagnostics;

那么结果将少很多,请问这啥原因导致的,我觉得程序没bug呀

论坛徽章:
0
发表于 2018-08-03 14:43 |显示全部楼层
送你上去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP