zoukankan      html  css  js  c++  java
  • POJ 2248【加法链】

    描述

     

     

      对于一个数列a1,a2......am,其中a1 = 1,am = n , a1 < a2 < ... < am-1 < am 对于每个k(2<=k<=m),ak=ai+aj (1 <= i, j <= k-1),现给定n的值,要求m的最小值.

    输入输出格式

    输入

      整个测试有多组数据,每行一个数字N,N<=100,测试以数字零代表结束。

    输出

      输出有多行,每行一个数字,代表你的结果

    输入输出样例

    输入样例1
    5
    7
    12
    15
    77
    0
    输出样例1
    4
    5
    5
    6
    9
    

    解题思路

      咳咳,这道题和数列有点像(几乎一模一样)只需要注意换行(我当初没换爆了四次)再加一个while输入就行,所以,去看看数列吧,有思路的。

    题解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,ans=999999;
     4 int dp[1001];
     5 void dfs(int dep,int pre)
     6 {
     7     int sum=-1;
     8     int p=pre;
     9     while(p<=n) 
    10     {
    11         p*=2;
    12         sum++;
    13     }
    14     if(dep+sum>=ans)return;
    15     for(int i=dep-1;i>=1;i--)
    16     {
    17         for(int j=i;j>=1;j--)
    18         {
    19             int num=dp[i]+dp[j];
    20             if(num>pre&&num<=n)
    21             {
    22                 dp[dep]=num;
    23                 if(num==n&&dep<ans)
    24                 {
    25                     ans=dep;
    26                     return;
    27                 }
    28                 dfs(dep+1,num);
    29             }
    30         }
    31     }
    32 }
    33 int main()
    34 {
    35     while(cin>>n)
    36     {
    37         memset(dp,0,sizeof(dp));
    38         if(n==0)break;
    39         ans=99999;
    40         if(n<=2)
    41         {
    42             cout<<n<<endl;
    43         }
    44         else
    45         {
    46             dp[1]=1;
    47             dp[2]=2;
    48             dfs(3,2);
    49             cout<<ans<<endl;
    50         }
    51         
    52     } 
    53     
    54     
    55 } 
  • 相关阅读:
    node.js ---path模块
    es6箭头函数this问题
    Codeforces Round #576 (Div. 2) | CF1199 补题
    Hungary
    CF 1196D2 RGB Substring (hard version) --- 前缀和 + 思维
    康托展开
    POJ1821 Fence --- 单调队列 + DP
    素数筛
    自动化接口面试遇到的问题
    linux遇到的面试问题
  • 原文地址:https://www.cnblogs.com/hualian/p/11164147.html
Copyright © 2011-2022 走看看