zoukankan      html  css  js  c++  java
  • LOJ10021 Addition Chains

    题目描述

    原题来自:ZOJ 1937

    已知一个数列 A0,A1,A2,A3,...,Am(其中A0=1,Am=n,A0<A1<A2<A3<...<Am )。对于每个 k,需要满足 Ak=Ai+Aj(0<=i,j<k这里 i 与 j 可以相等)。

    现给定 n 的值,要求 m 的最小值(并不要求输出),及这个数列每一项的值(可能存在多个数列,只输出任一个满足条件的就可以了)。

    输入格式

    多组数据,每行给定一个正整数 n 。

    输入以 0 结束。

    输出格式

    对于每组数据,输出满足条件的长度最小的数列。

    样例
    输入复制
    5
    7
    12
    15
    77
    0
    输出复制
    1 2 4 5
    1 2 4 6 7
    1 2 4 8 12
    1 2 4 5 10 15
    1 2 4 8 9 17 34 68 77
     
    数据范围与提示
     

    _________________________

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,ans;
     4 int sz[105],da[105];
     5 void dfs(int p)
     6 {
     7     if(sz[p-1]>n)return;
     8     if(p-1>=ans)return ;
     9     if(sz[p-1]==n && p-1<ans)
    10     {
    11         ans=p-1;
    12         for(int i=1;i<p;++i)da[i]=sz[i];
    13     }
    14     for(int i=p-1;i>=1;--i)
    15     {
    16         sz[p]=sz[p-1]+sz[i];
    17         dfs(p+1);
    18     }
    19 }
    20 int main()
    21 {
    22     sz[1]=1;
    23     while(scanf("%d",&n)==1 && n)
    24     {
    25         ans=105;
    26         dfs(2);
    27         for(int i=1;i<=ans;++i)printf("%d ",da[i]);
    28         putchar('
    ');
    29     }
    30     return 0;
    31 }
    View Code
  • 相关阅读:
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale
    CodeForces 785B Anton and Classes
    CodeForces 785A Anton and Polyhedrons
    爱奇艺全国高校算法大赛初赛C
    爱奇艺全国高校算法大赛初赛B
    爱奇艺全国高校算法大赛初赛A
    EOJ 3265 七巧板
    EOJ 3256 拼音魔法
    EOJ 3262 黑心啤酒厂
  • 原文地址:https://www.cnblogs.com/gryzy/p/14053983.html
Copyright © 2011-2022 走看看