• <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 幻浪天空領(lǐng)主 閱讀(217) 評(píng)論(0)  編輯 收藏 引用 所屬分類: USACO

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

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆檔案(2)

            文章分類(23)

            文章檔案(22)

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            青青草原综合久久大伊人| 欧美久久久久久午夜精品| 久久精品国产亚洲AV麻豆网站| 午夜精品久久久久久久久| 久久久久久久综合日本亚洲| 久久国产精品二国产精品| 久久国产欧美日韩精品| 国产亚洲欧美成人久久片| 久久青青草视频| 91久久精品无码一区二区毛片| 中文字幕久久亚洲一区| 久久久黄片| 新狼窝色AV性久久久久久| 国产精品九九久久精品女同亚洲欧美日韩综合区 | | 久久99精品久久久久久hb无码 | 久久黄色视频| 精品久久久久中文字幕日本| 理论片午午伦夜理片久久| 亚洲国产成人久久精品影视| 久久综合偷偷噜噜噜色| 99久久无码一区人妻| 日产精品久久久久久久| 色综合久久天天综线观看| 国产精品狼人久久久久影院 | 青青久久精品国产免费看| 久久被窝电影亚洲爽爽爽| 午夜天堂av天堂久久久| 国产精品久久久香蕉| 色婷婷综合久久久久中文字幕 | 久久精品亚洲福利| 国产成人99久久亚洲综合精品| 久久w5ww成w人免费| 久久丫精品国产亚洲av不卡| 日本强好片久久久久久AAA| 囯产极品美女高潮无套久久久| 久久久精品人妻一区二区三区蜜桃| 久久亚洲精品无码观看不卡| 色婷婷狠狠久久综合五月| 97精品伊人久久久大香线蕉| 精品久久久久久国产|