写的稍许复杂了些,使用了递归判断
C++ 代码
#include<iostream>
using namespace std;
int count=0;
bool equal(int n,int *a){
for(int i = 1; i < n; i++)
if(a[i] != a[0])
return false;
return true;
}
void tracking(int n,int *a)
{
if(equal(n,a))
return;
a[0]=a[0]/2;
int temp=a[0];
for(int j=1;j<n;j++){
a[j]=a[j]/2;
a[j-1]=a[j-1]+a[j];
}
a[n-1]=a[n-1]+temp;
for(int j=0;j<n;j++){
while(a[j]&1){
a[j]++;
count++;
}
}
tracking(n,a);
}
int main(){
int a[100];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
tracking(n,a);
cout<<count++;
}