题目链接:点击打开链接
贪心策略:知道数字和较小端和较大端时,较小的数字最多能加上9-num,较大的则是num
所以得出六个数字对平衡的贡献,只需对其排序后处理即可
AC代码如下
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int solve(int* s, int* l, int d)
{
int num[7];
for(int i=1;i<=3;++i)
num[i] = 9 - s[i-1], num[i+3]=l[i-1];
sort(num+1,num+7);
int cnt=0;
while(d>0)
d-=num[6-cnt++];
return cnt;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int num[7];
string s;
while(cin>>s)
{
for(int i=1;i<=6;++i)
num[i] = s[i-1] -'0';
int l=0, r=0;
for(int i=0;i<3;++i)
l+=num[i+1], r+=num[6-i];
if(l>r) cout<<solve(num+4, num+1, l-r)<<endl;
else if(l<r) cout<<solve(num+1, num+4, r-l)<<endl;
else cout<<0<<endl;
}
return 0;
}