• <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>

            ArcTan

            dfs
            隨筆 - 16, 文章 - 117, 評論 - 6, 引用 - 0
            數據加載中……

            白書上的動態規劃D---dp組合計數問題

            Coin Change 

            Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money.


            For example, if we have 11 cents, then we can make changes with one 10-cent coin and one 1-cent coin, two 5-cent coins and one 1-cent coin, one 5-cent coin and six 1-cent coins, or eleven 1-cent coins. So there are four ways of making changes for 11 cents with the above coins. Note that we count that there is one way of making change for zero cent.


            Write a program to find the total number of different ways of making changes for any amount of money in cents. Your program should be able to handle up to 7489 cents.

            Input 

            The input file contains any number of lines, each one consisting of a number for the amount of money in cents.

            Output 

            For each input line, output a line containing the number of different ways of making changes with the above 5 types of coins.

            Sample Input 

            11 26 

            Sample Output 

            4 13 

            題目大意:

             給定1 5 10 25 50五種硬幣,給定一個數,問用這些硬幣有多少種不同的組合方式?

            想想好像可以是一個方程組求解的問題嘛:

                            x1+5*x2+10*x3+25*x4+50*x5=x0;

                            給定x0,一組滿足條件的x>=0就是解集。啊哈哈哈。可以高斯消元法咯。

            不過,明顯的計數問題:

            dp[i][j]表示i可以由前j種硬幣表示的方法數。

            dp[i][j]=dp[i][j-1]+dp[i-coin[j]][j]     i-coin[j]>0

            dp[i][j]=dp[i][j-1]+1  i-coin[j]=0;

            dp[i][j]=dp[i][j-1] i-coin[j]<0

            總結:

                  方程類問題,一定要先把方程寫清楚!!!

            #include<stdio.h>
            #include<string.h>
            #include<math.h>
            long long dp
            [7500][5],coin[5]={1,5,10,25,50};
            int GetAns()
            {
                int i
            ,j;
                memset(dp,0,sizeof(dp));
                dp[1][0]=dp[1][1]=dp[1][2]=dp[1][3]=dp[1][4]=1;
                for (i=2;i<=7489 ;i++ )
                {
                    dp
            [i][0]=1;
                    for (j=1;j<5 ;j++ )
                        if (i-coin[j]>0)
                            dp
            [i][j]=dp[i][j-1]+dp[i-coin[j]][j];
                        else
                            if (i-coin
            [j]==0)
                                dp
            [i][j]=dp[i][j-1]+1;
                            else
                                dp
            [i][j]=dp[i][j-1];
                }
            }
            int main()
            {
                int n
            ;
                GetAns();
                while (scanf("%d",&n)==1)
                    printf(
            "%lld\n",dp[n][4]);
                return 0;
            }


            額額,dp是個好東西,該看看優化了!!!

            posted on 2012-04-29 19:11 wangs 閱讀(269) 評論(0)  編輯 收藏 引用 所屬分類: ACM-DP

            久久久久久久综合日本| 久久亚洲综合色一区二区三区| 久久精品无码一区二区三区日韩| 久久最新精品国产| 伊人色综合九久久天天蜜桃| 欧美黑人又粗又大久久久| 99久久精品国产麻豆| 老司机午夜网站国内精品久久久久久久久 | www.久久热| 欧美激情精品久久久久久久| 亚洲中文字幕久久精品无码APP | 人妻少妇久久中文字幕一区二区 | 国产精品丝袜久久久久久不卡| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久嫩草影院免费看夜色| 亚洲va中文字幕无码久久不卡| 国内精品久久久久影院网站| 无码人妻久久一区二区三区| 久久国产福利免费| 久久99国产精品99久久| 亚洲AV无码一区东京热久久| 精品人妻伦九区久久AAA片69| 日本久久久久亚洲中字幕| 狠狠色丁香婷婷久久综合| 久久99久久成人免费播放| 久久se精品一区二区| 久久精品a亚洲国产v高清不卡| 欧美日韩精品久久免费| 欧美日韩精品久久久久| 久久综合九色综合97_久久久| 久久精品国产亚洲精品2020| 亚洲va久久久噜噜噜久久| 97精品依人久久久大香线蕉97| 久久精品国产一区二区| 国产精品九九久久免费视频 | 精品国产青草久久久久福利| 国产国产成人精品久久| 国产午夜福利精品久久2021| 久久精品九九亚洲精品| 97久久久久人妻精品专区| 久久久久四虎国产精品|