• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            雪竹的天空

            theorix

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              34 隨筆 :: 0 文章 :: 20 評論 :: 0 Trackbacks
            簡單的dp題
            注意輸出函數的編寫
            還有dp方程
              1/****************************************************************
              2    Problem: 1171
              3    User: theorix
              4    Language: C++
              5    Result: Accepted
              6    Time:152 ms
              7    Memory:980 kb
              8****************************************************************/

              9
             10#include<iostream>
             11#include<math.h>
             12using namespace std;
             13#define NN 5000
             14int ans[NN+9];
             15int mem[NN+9][2];
             16int xans[NN+9];
             17int xmem[NN+9][2];
             18int chose[NN+9];
             19void output2(int n)
             20{
             21    if(xmem[n][0]==0)
             22    {
             23        int i;
             24        for(i=1;i<=n;i++)
             25            printf("|");
             26        return ;
             27    }

             28    output2(xmem[n][0]);
             29    printf("x");
             30    output2(xmem[n][1]);
             31}

             32void output(int n)
             33{
             34    if(chose[n]==0)
             35    {
             36        for(int i=1;i<=n;i++)
             37            printf("|");
             38    }

             39    else if(chose[n]==1)
             40    {
             41        output(mem[n][0]);
             42        printf("+");
             43        output(mem[n][1]);
             44    }

             45    else if(chose[n]==2)
             46    {
             47        output2(mem[n][0]);
             48        printf("x");
             49        output2(mem[n][1]);
             50    }

             51}

             52int main()
             53{
             54//    freopen("toothpicks.in","r",stdin);
             55//    freopen("out.txt","w",stdout);
             56    int i,j,k,n,t,tt;
             57    xans[1]=1;
             58    for(i=2;i<=NN;i++)
             59    {
             60        t=(int)sqrt(i);
             61        xans[i]=i;
             62        for(j=2;j<=t;j++)
             63        {
             64            if(i%j==0&&xans[j]+xans[i/j]+2<xans[i])
             65            {
             66                xans[i]=xans[j]+xans[i/j]+2;
             67                xmem[i][0]=j;
             68                xmem[i][1]=i/j;
             69            }

             70        }

             71    }

             72    ans[1]=1;
             73    chose[1]=0;
             74    for(i=2;i<=NN;i++)
             75    {
             76        t=(int)sqrt(i);
             77        ans[i]=i;
             78        chose[i]=0;
             79        for(j=1;j<=i/2;j++)
             80        {
             81            if(ans[j]+ans[i-j]+2<ans[i])
             82            {
             83                ans[i]=ans[j]+ans[i-j]+2;
             84                mem[i][0]=j;
             85                mem[i][1]=i-j;
             86                chose[i]=1;
             87            }

             88        }

             89        for(j=2;j<=t;j++)
             90        {
             91            if(i%j==0&&xans[j]+xans[i/j]+2<=ans[i])
             92            {
             93                ans[i]=xans[j]+xans[i/j]+2;
             94                mem[i][0]=j;
             95                mem[i][1]=i/j;
             96                chose[i]=2;
             97            }

             98        }

             99    }

            100//for(i=1;i<=160;i++)cout<<i<<" "<<chose[i]<<endl;
            101//    for(n=1;n<=NN;n++)
            102    while(scanf("%d",&n)!=EOF)
            103    {//printf("%d\n",n);
            104        printf("%d toothpicks: ",ans[n]);
            105        output(n);
            106        printf("=%d\n",n);
            107    }

            108}

            109
            posted on 2008-09-06 21:04 雪竹的天空( theorix ) 閱讀(505) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
            久久夜色精品国产噜噜亚洲a| 7777久久久国产精品消防器材| 久久夜色精品国产噜噜噜亚洲AV| 精品国产乱码久久久久久呢| 亚洲精品美女久久久久99| 久久午夜无码鲁丝片| 777久久精品一区二区三区无码| 精品久久香蕉国产线看观看亚洲| 久久免费精品视频| 久久综合成人网| 99999久久久久久亚洲| 久久亚洲AV无码西西人体| 精产国品久久一二三产区区别 | 久久亚洲AV无码精品色午夜麻豆| 狠狠色婷婷久久综合频道日韩 | 手机看片久久高清国产日韩| 成人久久免费网站| 久久久久久国产精品无码下载| 亚洲国产另类久久久精品 | 99精品久久久久久久婷婷| 久久人妻少妇嫩草AV蜜桃| 一本色道久久88加勒比—综合| 久久久久久精品免费免费自慰| 国产A级毛片久久久精品毛片| 久久久国产乱子伦精品作者| 狠狠色丁香久久婷婷综合蜜芽五月| 久久久九九有精品国产| 少妇高潮惨叫久久久久久| 中文字幕无码久久精品青草| 国产精品伊人久久伊人电影 | 国产AⅤ精品一区二区三区久久| 亚洲国产精品一区二区久久hs| 欧美一级久久久久久久大| 夜夜亚洲天天久久| 99久久国语露脸精品国产| 久久偷看各类wc女厕嘘嘘| 成人午夜精品无码区久久| 国产精品亚洲综合久久| 欧美日韩精品久久久久| 久久久无码精品亚洲日韩蜜臀浪潮| 日本加勒比久久精品|