平均分配

  1. #include <iostream>
  2. using namespace std;
  3. int arr[105];
  4. int main(){
  5. int N,cnt = 0,avg;
  6. cin >> N;
  7. for(int i = 1;i <= N;i++){
  8. cin >> arr[i];
  9. cnt += arr[i];
  10. }
  11. avg = cnt / N;
  12. int t = 0;
  13. for(int i = 1;i < N;i++){
  14. if(arr[i] != avg){
  15. t++;
  16. arr[i + 1] -= avg - arr[i];
  17. }
  18. }
  19. cout << t;
  20. return 0;
  21. }

数据分段问题

  1. #include <iostream>
  2. using namespace std;
  3. int arr[100005];
  4. int main(){
  5. int N,M,x,s = 0,ans = 1;
  6. cin >> N >> M;
  7. for(int i = 1;i <= N;i++){
  8. cin >> x;
  9. if(s + x <= M){
  10. s += x;
  11. }
  12. else{
  13. s = x;
  14. ans++;
  15. }
  16. }
  17. cout << ans;
  18. return 0;
  19. }

找零钱

  1. #include <iostream>
  2. using namespace std;
  3. int coin[5] = {20,10,5,1},n,count = 0;
  4. int main(){
  5. cin >> n;
  6. for(int i = 0;i < 4;i++){
  7. while(n >= coin[i]){
  8. n = n - coin[i];
  9. count++;
  10. }
  11. }
  12. cout << count;
  13. return 0;
  14. }

找零钱2

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int coin[25];
  4. bool cmp(int a,int b){
  5. return a > b;
  6. }
  7. int main(){
  8. int n,m,ans = 0;
  9. cin >> n >> m;
  10. for(int i = 1;i <= m;i++){
  11. cin >> coin[i];
  12. }
  13. sort(coin + 1,coin + m + 1,cmp);
  14. for(int i = 1;i <= m;i++){
  15. while(n >= coin[i]){
  16. n = n - coin[i];
  17. ans++;
  18. }
  19. }
  20. cout << ans;
  21. return 0;
  22. }

找零钱3

  1. #include <iostream>
  2. using namespace std;
  3. int coin[25] = {};
  4. int coinNum[101];
  5. int main(){
  6. int n,m;
  7. cin >> n >> m;
  8. for(int i = 0;i < m;i++){
  9. cin >> coin[i];
  10. }
  11. for(int i = 1;i <= n;i++){
  12. int Min = i;
  13. for(int j = 0;j < m;j++){
  14. if(i >= coin[j]){
  15. if(coinNum[i - coin[j]] + 1 <= Min){
  16. Min = coinNum[i - coin[j]] + 1;
  17. }
  18. }
  19. }
  20. coinNum[i] = Min;
  21. }
  22. cout << coinNum[n] << endl;
  23. return 0;
  24. }