2013藍橋杯全國軟體大賽C++模擬試題-硬幣方案-解答
阿新 • • 發佈:2019-02-11
題目
標題:硬幣方案
有50枚硬幣,可能包括4種類型:1元,5角,1角,5分。
已知總價值為20元。求各種硬幣的數量。
比如:2,34,6,8 就是一種答案。
而 2,33,15,0 是另一個可能的答案,顯然答案不唯一。
你的任務是確定類似這樣的不同的方案一共有多少個(包括已經給出的2個)?
/* 標題:硬幣方案 有50枚硬幣,可能包括4種類型:1元,5角,1角,5分。 已知總價值為20元。求各種硬幣的數量。 比如:2,34,6,8 就是一種答案。 而 2,33,15,0 是另一個可能的答案,顯然答案不唯一。 你的任務是確定類似這樣的不同的方案一共有多少個(包括已經給出的2個)? 作者:郭豔燕 時間:20130408 */ #include <iostream> using namespace std; int main() { //金錢型別不統一,在進行定義時要統計計量單位,都用分來表示 int yuan1=100; int jiao5=50; int jiao1=10; int fen5=5; int n=0; //n用來記錄方案個數 //分別來記錄1元硬幣個數、5角硬幣個數、1角硬幣個數、5分硬幣個數 int yuan1_count=0,jiao5_count=0,jiao1_count=0,fen5_count=0; //利用列舉法,列出所有可能選項再根據條件進行篩選 //條件1,硬幣個數和要等於50 //條件2,所有硬幣價值總和等於20元=2000分 for(yuan1_count=0;yuan1_count<=50;yuan1_count++) //列舉1元硬幣個數 for(jiao5_count=0;jiao5_count<=50;jiao5_count++) //列舉5角硬幣個數 for(jiao1_count=0;jiao1_count<=50;jiao1_count++) //列舉1角硬幣個數 for(fen5_count=0;fen5_count<=50;fen5_count++) //列舉5分硬幣個數 if((yuan1_count+jiao5_count+jiao1_count+fen5_count==50)&&(yuan1*yuan1_count+jiao5*jiao5_count+jiao1*jiao1_count+fen5*fen5_count==2000)) n++; //滿足條件方案數增1 cout<<"有50枚硬幣,可能包括4種類型:1元,5角,1角,5分。已知總價值為20元。"<<endl; cout<<"滿足上述條件的不同的組合方案個數為:"<<n<<endl; return 0; }