love_wisdom 发表于 2014-06-18 20:05

这样可以不,你等我,我出一个pascal版的,你要不?

NO_Getway 发表于 2014-06-18 23:47

回复 21# love_wisdom


   可以啊,猜想能可能能看懂pascal逻辑。

rubyish 发表于 2014-06-19 07:44

本帖最后由 rubyish 于 2014-06-19 04:37 编辑

:D)~ lai ge perl
perl abc.pl > result
cat result#!/usr/bin/perl
# abc.pl

my @A = ( 8, 1, 4, 2, 7, 3, 5, 6 );
my $B = 30;
my @C = sort { $b <=> $a } @A;

my @index = sort { $A[$b] <=> $A[$a] } 0 .. $#A;
@index = sort { $index[$a] <=> $index[$b] } 0 .. $#index;

sub gimme {
    my ( $num, $head, @tail ) = @_;
    return $num % $head ? () : [ $num / $head ] unless @tail;
    map {
      my $h = $_;
      map { [ $h, @$_ ] } gimme( $num - $h * $head, @tail )
    } 0 .. $num / $head;
}

my @result = map [ @$_[@index] ], gimme $B, @C;

for my $r (@result) {
    print join ' + ', map { "$r->[$_]*$A[$_]" } 0 .. $#$r;
    print " = $B$/";
}

print 'total = ', ~~ @result, $/;

__DATA__

Linux_manne 发表于 2014-06-19 10:14

都很nice 学习中。。

NO_Getway 发表于 2014-06-19 13:22

回复 8# Hadron74


    这哥们 忘了给你说谢谢了,不错,就是a和b很长或者很大的时候运行很慢了

NO_Getway 发表于 2014-06-19 13:24

回复 23# rubyish


    perl符号太多了,查查语法再看看,谢谢

rubyish 发表于 2014-06-20 01:32

回复 26# NO_Getway
biru:

a = ( 4, 3, 8, 2, 6 )
b = 13

sort a: da <--> xiao8 6 4 3 2       13
------------------
0 0 0 0 6.5   X
0 0 0 1 5
0 0 0 2 3.5   X
0 0 0 3 2
0 0 0 4 0.5   X
0 0 1 0 4.5   X
0 0 1 1 3
0 0 1 2 1.5   X
0 0 1 3 0
0 0 2 0 2.5   X
0 0 2 1 1
0 0 3 0 0.5   X
0 1 0 0 3.5   X
0 1 0 1 2
0 1 0 2 0.5   X
0 1 1 0 1.5   X
0 1 1 1 0
0 2 0 0 0.5   X
1 0 0 0 2.5   X
1 0 0 1 1
1 0 1 0 0.5   X
------------------
total = 21
NG :13, OK : 8
页: 1 2 [3]
查看完整版本: 求一个多元一次函数的可能解