思路:
先求出平均数
从左开始往右,如果目前牌总数不0,那么就只能盼望下一堆来牌(正负均是)来抵消,所以步数+1
#include <bits/stdc++.h> using namespace std; int n; const int N=105; int a[N]; int sum,aver,qsum,cnt; int main(int argc, char** argv) { cin>>n; for(int i=0;i<n;i++){ scanf("%d",&a[i]); sum+=a[i]; } aver=sum/n; qsum=0;//目前牌总数 for(int i=0;i<n;i++){ qsum+=a[i]-aver; if(qsum) cnt++;//如果总数不为0.步数++ } cout<<cnt; return 0; }