日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++数组:发工资

發布時間:2023/12/20 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++数组:发工资 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

財務處要給公司的n位員工發工資了,請你幫助計算最少要多少張人民幣才能給每位員工發工資而不必找零呢?已知人民幣的面額為100元,50元,10元,5元,2元和1元這6種。

【輸入格式】

第一個值為正整數n,后面接著n個正整數表示n位員工的工資

【輸出格式】

一行一個整數輸出一共要準備的人民幣張數。

【輸入樣例】

3 1 2 3

【輸出樣例】

4

先叨叨兩句:作為一個小菜雞,也是第一次開始創作,后續會一直記錄平時的練習和作業。實際上自己寫代碼的時候,沒有那么多注釋,準備發上來,所以添了很多注釋。因為如果它能有幸幫助到初學者,希望你們都能看懂,看懂了再復制粘貼(我大一就查找到資源直接交作業,然后美美掛科~~)。當然如果能被大佬發現這些文章,希望得到批評指正(希望學會更好的算法)!謝謝看完這段廢話的兄弟姐妹萌~

代碼如下:

#include<iostream> using namespace std;int main() {int n, *p, count=0;// count記錄所需人民幣張數int a[6] = {100,50,10,5,2,1};//面額cin>>n; //員工數 p = new int[n]; //利用指針建立動態數組for(int i=0;i<n;i++){cin>>p[i];}int t = n;//t:保存待計算員工人數 while(t != 0) { //每計算完成一位員工所需數量,t--,直到全體員工計算完成后跳出循環for(int i = 0; i < n; i++) //從第0位員工算到第n-1個 {for(int j = 0; j < 6; j++)//需要最小數量,即需從最大面額開始計算 {if(p[i] >= a[j]) //員工工資大于當前面額 {//k:記錄當前面值的錢需要多少張 int k = p[i] / a[j];count += k; p[i] -= k * a[j]; //為下一面額作準備 }}}t--;}cout<<count<<endl;return 0; }

解題思路:

(1) 求最少需要多少張,即面值最大的盡可能用的多,所需的總數才越少(關鍵!)
(2) 先用最大面值的錢來填數,再用次小的面值來填數,比如280的工資,先發2個一百的;剩余80,先發1個50;最后剩余30,發3個10塊;總共6張
(3) 外層循環控制,將每位員工所需數目都計算出來

總結

以上是生活随笔為你收集整理的C++数组:发工资的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。