zoukankan      html  css  js  c++  java
  • TLE: poj 1011 Sticks

    Ozy的方法(dfs):

     1 # include <stdio.h>
    2 # include <string.h>
    3
    4 int f[51];
    5 int ok;
    6 int length;
    7
    8 void dfs(int cnt, int len, int cur)
    9 {
    10 int j;
    11
    12 if (cnt == 0) {ok = 1; return;}
    13
    14 --f[cur];
    15
    16 len -= cur;
    17 if (len != 0)
    18 {
    19 j = len<cur ? len:cur;
    20 for (; j > 0; --j)
    21 if (f[j]) dfs(cnt, len, j);
    22 }
    23 else
    24 {
    25 for (j = 50; !f[j] ; ) --j;
    26 dfs(cnt-1, length, j);
    27 }
    28
    29 ++f[cur];
    30 }
    31
    32 int main()
    33 {
    34 int i, n, x, max, sum;
    35
    36 while (1)
    37 {
    38 scanf("%d", &n);
    39 if (n == 0) break;
    40
    41 ok = 0;
    42 sum = max = 0;
    43 memset(f, 0, sizeof(f));
    44
    45 for (i = 1; i <= n; ++i)
    46 {
    47 scanf("%d", &x);
    48 ++f[x];
    49 sum += x;
    50 if (x > max) max = x;
    51 }
    52
    53 for (length = max; !ok ; ++length)
    54 if (sum%length == 0) dfs(sum/length, length, max);
    55
    56 printf("%d\n", length-1);
    57 }
    58
    59 return 0;
    60 }



  • 相关阅读:
    增删改查
    兴趣爱好
    兴趣爱好界面
    购物商城
    计算器
    安卓第四周作业
    安卓第一周作业
    第十五周作业
    十三周作业-集合
    第十三周上机练习
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2425045.html
Copyright © 2011-2022 走看看