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

            USACO Section 2.3 Money Systems

            Money Systems

            The cows have not only created their own government but they have chosen to create their own money system. In their own rebellious way, they are curious about values of coinage. Traditionally, coins come in values like 1, 5, 10, 20 or 25, 50, and 100 units, sometimes with a 2 unit coin thrown in for good measure.

            The cows want to know how many different ways it is possible to dispense a certain amount of money using various coin systems. For instance, using a system of {1, 2, 5, 10, ...} it is possible to create 18 units several different ways, including: 18x1, 9x2, 8x2+2x1, 3x5+2+1, and many others.

            Write a program to compute how many ways to construct a given amount of money using supplied coinage. It is guaranteed that the total will fit into both a signed long long (C/C++) and Int64 (Free Pascal).

            PROGRAM NAME: money

            INPUT FORMAT

            The number of coins in the system is V (1 <= V <= 25).

            The amount money to construct is N (1 <= N <= 10,000).
            Line 1: Two integers, V and N
            Lines 2..: V integers that represent the available coins (no particular number of integers per line)

            SAMPLE INPUT (file money.in)

            3 10
                1 2 5
                

            OUTPUT FORMAT

            A single line containing the total number of ways to construct N money units using V coins.

            SAMPLE OUTPUT (file money.out)

            10
                

            Analysis

            It is really a very good problem to train your dynamic programing skill. Initially, it is close to the comletement pack problem. The only difference is that we need to calculate the methods instead of the highest value. But it doesn't matter, change the traditional function max into a proper one: sum.Well, the problem becomes simple.
            Here I'd better provode my dynamic function: f[i][v]=sum{f[i-1][v-k*w[i]]|0<=k*w[i]<=N}
            The f[i][v] stands for the ith coin for you to choose and v is the money you need to express. Of course, k is the number of the coins. Wow,fantastic!

            Code

            /*
            ID:braytay1
            PROG:money
            LANG:C++
            */

            #include 
            <iostream>
            #include 
            <fstream>
            #include 
            <string>
            using namespace std;
            ofstream fout(
            "money.out");
            ifstream fin(
            "money.in");
            void swap(int *p1,int *p2)
            {
                
            int tmp;
                tmp
            =*p1;
                
            *p1=*p2;
                
            *p2=tmp;
            }

            int partition(int a[],int p,int r)
            {
                
            int x,i;
                x
            =a[r];
                i
            =p-1;
                
            for (int j=p;j<r;j++)
                
            {
                    
            if (a[j]<=x) {i++;swap(a+i,a+j);}
                }

                swap(a
            +i+1,a+r);
                
            return i+1;
            }

            void quicksort(int a[],int p,int r)
            {
                
            if (p<r)
                
            {
                    
            int q;
                    q
            =partition(a,p,r);
                    quicksort(a,p,q
            -1);
                    quicksort(a,q
            +1,r);
                }

            }


            int main(){
                
            int V,N;
                fin
            >>V>>N;
                
            int w[26];
                
            long long int f[10001],g[10001];
                
            for(int i=1;i<=V;i++){
                    fin
            >>w[i];
                }

                quicksort(w,
            1,V);
                memset(f,
            0,sizeof(f));
                memset(g,
            0,sizeof(g));
                
            for (int i=0;i*w[1]<=N;i++) g[i*w[1]]=1;
                
            for(int i=2;i<=V;i++){
                    
            for(int j=0;j<=N;j++){
                        
            for(int k=0;k*w[i]<=j;k++){
                            f[j]
            +=g[j-k*w[i]];
                        }
                        
                    }
                
                    
            for(int j1=0;j1<=N;j1++){
                        g[j1]
            =f[j1];
                        f[j1]
            =0;
                    }

                }

                fout
            <<g[N]<<endl;
                
            return 0;
            }




             

            posted on 2008-08-12 03:26 幻浪天空領主 閱讀(217) 評論(0)  編輯 收藏 引用 所屬分類: USACO

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆檔案(2)

            文章分類(23)

            文章檔案(22)

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久综合国产欧美一区二区| 狠狠色丁香久久婷婷综合图片| 国产美女久久久| 91精品免费久久久久久久久| 三级韩国一区久久二区综合| 亚洲中文字幕无码久久2017| 精品久久久久中文字| 亚洲成色www久久网站夜月| 国产成人精品久久综合 | 亚洲中文字幕无码久久2020| jizzjizz国产精品久久| 伊人久久五月天| 亚洲嫩草影院久久精品| 欧美熟妇另类久久久久久不卡| 久久久久人妻精品一区三寸蜜桃| 久久久国产精品亚洲一区| 亚洲国产精品无码久久青草 | 久久精品国产2020| 国产亚洲色婷婷久久99精品91| 香蕉久久av一区二区三区| 要久久爱在线免费观看| 国产呻吟久久久久久久92| 久久电影网2021| 国内精品久久九九国产精品| 国内精品久久久久久99| 亚洲午夜久久久影院| 亚洲女久久久噜噜噜熟女| 久久天天躁狠狠躁夜夜不卡| 波多野结衣久久| 中文字幕精品久久久久人妻| 久久香蕉国产线看观看猫咪?v| 韩国三级中文字幕hd久久精品 | 亚洲AV无一区二区三区久久| 国产精品久久久久久久app| 色青青草原桃花久久综合| 午夜精品久久久久久| 亚洲国产综合久久天堂| 久久WWW免费人成一看片| 亚洲AV无码成人网站久久精品大| 亚洲va中文字幕无码久久| 国内精品久久久久影院薰衣草|