呵呵,以前工作上有要用到类似的情况,也写过一个简单的Perl Script:- use Math::Combinatorics;
- #sum.pl by y6cmE 9044185@qq.com
- $|=1;
- print "请输入要计算的合计数:";
- my $C=<>;
- chomp $C;
- print "请输入要匹配一次或多次,一次为1,多次为其它数,如2:";
- my $B=<>;
- chomp $B;
- print "请输入最少几个数开始匹配,如1:";
- my $X=<>;
- chomp $X;
- print "请输入最多几个数结束匹配,如9:";
- my $Y=<>;
- chomp $Y;
- open(C,">结果.txt") or die;
- open(A,"数组.txt") or die;
- while(my $line=<A>){
- chomp $line;
- push(@N,$line);
- }
- close A;
- foreach my $p($X..$Y){
- my $combinat=Math::Combinatorics->new(count=>$p,data=>[@N]);
- while(my @combo=$combinat->next_combination){
- my $num=0;
- foreach my $o(@combo){
- $num=$num+$o;
- }
- if($num eq $C){
- print "@combo\n";
- print C "@combo\n";
- if($B == 1){
- close C;
- <>;
- exit;
- }
- }
- }
- }
- close C;
- <>;
复制代码
|