亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: jzp520520
打印 上一主題 下一主題

求解不等式算法 [復(fù)制鏈接]

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
11 [報告]
發(fā)表于 2013-12-01 23:04 |只看該作者
回復(fù) 8# yestreenstars

那個no效率
10種尺寸,要 15 s


try: 12 s
  1. #!/usr/bin/perl
  2. my $length = 10;
  3. my @cut    = sort { $b <=> $a }
  4.   qw/2.5 2.6 1.9 3.5 2.0 4.0 4.5 5 4.7 3.2/;
  5. my ( $max, $count ) = ( $length - $cut[-1], '001' );

  6. sub try {
  7.     @_ ? map { my $h = $_; map [ $h, @$_ ], try(@_) } @{ +shift } : [];
  8. }

  9. print join( "\t", '     sum', 'rem', @cut ), $/;
  10. print $count++, '| ', join( "\t", @$_ ), $/
  11.   for sort { $b->[0] <=> $a->[0] } map {
  12.     my ( $gimme, $sum, $i ) = $_;
  13.     for (@$gimme) {
  14.         $sum += $cut[ $i++ ] * $_;
  15.         last if $sum > $length;
  16.     }
  17.     $max < $sum && $sum <= $length
  18.       ? [ sprintf( "%.1f", $sum ), sprintf( "%.2f", $length - $sum ), @$gimme ]
  19.       : ()
  20.   } try map [ 0 .. $length / $_ ], @cut;
復(fù)制代碼
try2: 8s
  1. #!/usr/bin/perl
  2. my $length = 10;
  3. my @cut    = sort { $b <=> $a }
  4.   qw/2.5 2.6 1.9 3.5 2.0 4.0 4.5 5 4.7 3.2/;
  5. my ( $max, $count ) = ( $length - $cut[-1], '001' );

  6. sub try2 {
  7.     map [ split /\|/ ],
  8.       glob '{' . join( '}{', map join( '|,', @$_ ) . '|', @_ ) . '}';
  9. }

  10. print join( "\t", '     sum', 'rem', @cut ), $/;
  11. print $count++, '| ', join( "\t", @$_ ), $/
  12.   for sort { $b->[0] <=> $a->[0] } map {
  13.     my ( $gimme, $sum, $i ) = $_;
  14.     for (@$gimme) {
  15.         $sum += $cut[ $i++ ] * $_;
  16.         last if $sum > $length;
  17.     }
  18.     $max < $sum && $sum <= $length
  19.       ? [ sprintf( "%.1f", $sum ), sprintf( "%.2f", $length - $sum ), @$gimme ]
  20.       : ()
  21.   } try2 map [ 0 .. $length / $_ ], @cut;
復(fù)制代碼
try3: 8s
  1. #!/usr/bin/perl
  2. my $length = 10;
  3. my @cut    = sort { $b <=> $a }
  4.   qw/2.5 2.6 1.9 3.5 2.0 4.0 4.5 5 4.7 3.2/;
  5. my ( $max, $count, @choice ) = ( $length - $cut[-1], '001' );

  6. sub try3 {
  7.     my ( $check, $t, @A ) = ( 1, 1, @_ );
  8.     my @elem = map { $check *= @$_; scalar @$_ } @A;
  9.     my @M = reverse 1, map $t = $t * $elem[ -$_ ], 1 .. $#elem;
  10.     sub {
  11.         return unless $check--;
  12.         [ map $A[$_][ $check / $M[$_] % $elem[$_] ], 0 .. $#elem ];
  13.     };
  14. }

  15. my $gimme = try3 map [ 0 .. $length / $_ ], @cut;

  16. while ( my $try = $gimme->() ) {
  17.     my ( $sum, $i );
  18.     for (@$try) {
  19.         $sum += $cut[ $i++ ] * $_;
  20.         last if $sum > $length;
  21.     }
  22.     next if $sum > $length or $sum <= $max;
  23.     push @choice,
  24.       [ sprintf( "%.1f", $sum ), sprintf( "%.2f", $length - $sum ), @$try ];
  25. }

  26. print join( "\t", '     sum', 'rem', @cut ), $/;
  27. print $count++, '| ', join( "\t", @$_ ), $/
  28.   for sort { $b->[0] <=> $a->[0] } @choice;
復(fù)制代碼

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
12 [報告]
發(fā)表于 2013-12-01 23:14 |只看該作者
回復(fù) 7# 104359176


    大牛,有 any 調(diào)優(yōu) de idea?.

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
13 [報告]
發(fā)表于 2013-12-01 23:17 |只看該作者
回復(fù) 10# jzp520520
  1. my $a = [ 1, 2, 3 ];
  2. my @a = @$a;
  3. say @a;   # 123
復(fù)制代碼

論壇徽章:
0
14 [報告]
發(fā)表于 2013-12-01 23:22 |只看該作者
看不懂。。。但是感覺蠻高深的
rubyish 發(fā)表于 2013-11-29 00:30
No Optimization!
看看:

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
15 [報告]
發(fā)表于 2013-12-01 23:25 |只看該作者
回復(fù) 14# 大眾推薦

大牛,有 any 調(diào)優(yōu) de idea?.
   

論壇徽章:
0
16 [報告]
發(fā)表于 2013-12-02 00:26 |只看該作者
本帖最后由 cujeson 于 2013-12-02 00:29 編輯

回復(fù) 3# rubyish


大神,請教一下這行代碼:
@_ ? map { my $h = $_; map [ $h, @$_ ], try(@_) } @{ +shift } : [];
以下是我的疑問:
1.第一個黃色區(qū)域@_判斷的是什么?數(shù)組長度?數(shù)組是否存在?數(shù)組是否為空?
2.第二個黃色區(qū)域map [ $h, @$_ ], try(@_),這嵌套看起來有點暈,這map函數(shù)返回值是什么。
3.第二個黃色區(qū)域@{ +shift }這是從@_的左邊取出一個元素來創(chuàng)建數(shù)組的意思嗎?
4.第三個黃色區(qū)域[]表示什么?
5.還有一個問題就是下面也出現(xiàn)一個類似的(),這是返回空列表的意思嗎?

問題比較多,感謝大神不吝賜教!

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
17 [報告]
發(fā)表于 2013-12-02 03:32 |只看該作者
回復(fù) 16# cujeson
  1. sub try {
  2.     return [] if @_ == 0;
  3.     my $a = shift;
  4.     my @R =
  5.       map {
  6.         my $h = $_;
  7.         print "-> $h ";
  8.         map { [ $h, @$_ ] } try(@_)
  9.       } @$a;
  10.     say "$/\@a = @$a  return =";
  11.     say "\t@$_ " for @R;
  12.     @R;
  13. }

  14. try [qw/A B/], [qw/x y/], [qw/1 2 3 4/];
復(fù)制代碼
output:
  1. -> A -> x -> 1 -> 2 -> 3 -> 4
  2. @a = 1 2 3 4  return =
  3.         1
  4.         2
  5.         3
  6.         4
  7. -> y -> 1 -> 2 -> 3 -> 4
  8. @a = 1 2 3 4  return =
  9.         1
  10.         2
  11.         3
  12.         4

  13. @a = x y  return =
  14.         x 1
  15.         x 2
  16.         x 3
  17.         x 4
  18.         y 1
  19.         y 2
  20.         y 3
  21.         y 4
  22. -> B -> x -> 1 -> 2 -> 3 -> 4
  23. @a = 1 2 3 4  return =
  24.         1
  25.         2
  26.         3
  27.         4
  28. -> y -> 1 -> 2 -> 3 -> 4
  29. @a = 1 2 3 4  return =
  30.         1
  31.         2
  32.         3
  33.         4

  34. @a = x y  return =
  35.         x 1
  36.         x 2
  37.         x 3
  38.         x 4
  39.         y 1
  40.         y 2
  41.         y 3
  42.         y 4

  43. @a = A B  return =
  44.         A x 1
  45.         A x 2
  46.         A x 3
  47.         A x 4
  48.         A y 1
  49.         A y 2
  50.         A y 3
  51.         A y 4
  52.         B x 1
  53.         B x 2
  54.         B x 3
  55.         B x 4
  56.         B y 1
  57.         B y 2
  58.         B y 3
  59.         B y 4
復(fù)制代碼
in last element [1, 2, 3, 4]
map { my $h = $_; map [ $h, @$_ ], try(@_) } 1, 2, 3, 4
now @_ is empty so sub return []
[ $h, @$_ ] => [ $h, @{ [] } ] => [ $h ] -> [1]
[1]
[2]
[3]
[4]

in [x, y]
map [ $h, @$_ ], [1], [2], [3], [4]
[ $h, @$_ ] => [ x, @{ [1] } ] =>
[x, 1]
[x, 2]
[x, 3]
[x, 4]
....
[y, 4]

in [A, B]
map [ $h, @$_ ], [x, 1],[x, 2] ... [y, 4]
[ $h, @$_ ] => [ A, @{ [x, 1] } ] =>
[A, x, 1]
[A, x, 2]
...
[A, y, 4]
[B, x, 1]
....
[B, y, 4]

論壇徽章:
0
18 [報告]
發(fā)表于 2013-12-02 12:24 |只看該作者
親,我是真心看不懂并真心認(rèn)為很高深,反正我看到帶@ $ 等編程,包括shell,就頭暈,就真心覺得你們牛X,因為我覺得精神稍微不集中,就會犯錯。。。
rubyish 發(fā)表于 2013-12-01 23:25
回復(fù) 14# 大眾推薦

大牛,有 any 調(diào)優(yōu) de idea?.

論壇徽章:
0
19 [報告]
發(fā)表于 2013-12-02 13:15 |只看該作者
回復(fù) 17# rubyish


return [] 是不是相當(dāng)于return undef;


   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
20 [報告]
發(fā)表于 2013-12-02 14:06 |只看該作者
回復(fù) 11# rubyish


would you like this

$ cat cut.pl
#!/usr/bin/perl

use strict;
use warnings;

while(<DATA>){
  chomp;
  next if(m/^\s*#/);
  next if(m/^\s*$/);
  
  my($sTotal, @aCut) = split;
  get_cut($sTotal, @aCut);
}

sub get_cut{
  my($sTotal, @aCut) = @_;
  our @aAns = ();
  our $sCnt = 0;
  my $sMin = $aCut[0];
  for(@aCut){$sMin = $_ if($sMin > $_)};

  print "Total Length= $sTotal, Min = $sMin\n";
  printf("%4s","");
  printf(" %5.2f", $_) foreach(@aCut);
  printf(" %5s %5s\n", "Sum", "Rem");

  _cut($sTotal, 0, $sMin, \@aCut, (0) x scalar(@aCut));

  printf("%4s","");
  printf(" %5.2f", $_) foreach(@aCut);
  printf(" %5s %5s\n", "Sum", "Rem");
  print "Total length = $sTotal, Min = $sMin\n";
  print "Total count = $sCnt\n\n";

  sub _cut{
    my($sTotal, $sOffset, $sMin, $raCut, @aNum) = @_;
    my $sSum = 0;
    $sSum += $aNum[$_] * $raCut->[$_]   for (0 .. (scalar @aNum -1));
    my $sDiff = sprintf("%.2f",$sTotal - $sSum);
    return if($sDiff < 0);
    if($sOffset >= scalar @aNum ){
      if(0 <= $sDiff && $sDiff < $sMin){
        printf("x%03d", ++$sCnt);
        printf(" %5d", $_) foreach(@aNum);
        printf(" %5.2f %5.2f\n", $sSum, $sDiff);
            push @aAns, [@aNum];
          }
      return
        }
    foreach (0 .. int($sTotal/$raCut->[$sOffset])){
      $aNum[$sOffset] = $_;
      _cut($sTotal, $sOffset+1, $sMin, $raCut, @aNum);
        }
  }
}

__DATA__
10 2.5 2.6 1.0 1.1
10 2.5 2.6 1.9 3.5 2.0 4.0 4.5 5 4.7 3.2


  1. $ time perl cut.pl
  2. Total Length= 10, Min = 1.9
  3.       2.50  2.60  1.90  3.50  2.00  4.00  4.50  5.00  4.70  3.20   Sum   Rem
  4. x001     0     0     0     0     0     0     0     0     0     3  9.60  0.40
  5. x002     0     0     0     0     0     0     0     0     2     0  9.40  0.60
  6. ...
  7. x135     3     0     0     0     1     0     0     0     0     0  9.50  0.50
  8. x136     3     0     1     0     0     0     0     0     0     0  9.40  0.60
  9. x137     4     0     0     0     0     0     0     0     0     0 10.00  0.00
  10.       2.50  2.60  1.90  3.50  2.00  4.00  4.50  5.00  4.70  3.20   Sum   Rem
  11. Total length = 10, Min = 1.9
  12. Total count = 137
復(fù)制代碼

real    0m0.324s
user    0m0.004s
sys    0m0.128s





您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP