Day23 洛谷真题讲解(贪心)
其实刚开始看到这道题,我的第一想法是看看能不能通过递归去解决,后来发现原来这道题,由于
原来这种就是啊!!!
他这道题,运用的方法是,把他分为一堆一堆,然后不停的往后移动,就像这道题说的,多往后移动,如果少就往后借,如果不够就让后面的那个数为负
#include<iostream>
using namespace std;
int arr[200] = { 0 };
int main()
{
int n;
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
sum += num;
arr[i] = num;
}
int p = sum / n;
int mark = 0;
for (int i = 0; i < n-1; i++)
{
if (arr[i] == 0)
{
continue;
}
if (arr[i] > p)
{
arr[i + 1]+= arr[i] - p;
mark++;
}
if (arr[i] < p)
{
arr[i + 1] -= p - arr[i];
mark++;
}
}
cout << mark;
}