平均分配
#include <iostream>using namespace std;int arr[105];int main(){ int N,cnt = 0,avg; cin >> N; for(int i = 1;i <= N;i++){ cin >> arr[i]; cnt += arr[i]; } avg = cnt / N; int t = 0; for(int i = 1;i < N;i++){ if(arr[i] != avg){ t++; arr[i + 1] -= avg - arr[i]; } } cout << t; return 0;}
数据分段问题
#include <iostream>using namespace std;int arr[100005];int main(){ int N,M,x,s = 0,ans = 1; cin >> N >> M; for(int i = 1;i <= N;i++){ cin >> x; if(s + x <= M){ s += x; } else{ s = x; ans++; } } cout << ans; return 0;}
找零钱
#include <iostream>using namespace std;int coin[5] = {20,10,5,1},n,count = 0;int main(){ cin >> n; for(int i = 0;i < 4;i++){ while(n >= coin[i]){ n = n - coin[i]; count++; } } cout << count; return 0;}
找零钱2
#include <bits/stdc++.h>using namespace std;int coin[25];bool cmp(int a,int b){ return a > b;}int main(){ int n,m,ans = 0; cin >> n >> m; for(int i = 1;i <= m;i++){ cin >> coin[i]; } sort(coin + 1,coin + m + 1,cmp); for(int i = 1;i <= m;i++){ while(n >= coin[i]){ n = n - coin[i]; ans++; } } cout << ans; return 0;}
找零钱3
#include <iostream>using namespace std;int coin[25] = {};int coinNum[101];int main(){ int n,m; cin >> n >> m; for(int i = 0;i < m;i++){ cin >> coin[i]; } for(int i = 1;i <= n;i++){ int Min = i; for(int j = 0;j < m;j++){ if(i >= coin[j]){ if(coinNum[i - coin[j]] + 1 <= Min){ Min = coinNum[i - coin[j]] + 1; } } } coinNum[i] = Min; } cout << coinNum[n] << endl; return 0;}