P1031均分纸牌
程序员文章站
2022-07-16 12:15:12
...
输出:最少移动次数
题说的是一共n堆数,每一堆数也不一样,每一堆的数只能往左右移动。
算最少移动次数。
题解:
第一步:先算平均数
第二步:计算每一堆和平均数的关系
第三步:当ai不等于0时,ai+1=ai+1+ai,次数加1.
注意最后的不用算了。
package 普及减;
import java.util.Scanner;
public class P1031 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
int sum=0;
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
sum+=a[i];
}
sum/=n;
for(int i=0;i<n;i++) {
a[i]-=sum;
}
int count=0;
for(int i=0;i<n-1;i++) {
if(a[i]==0) {
continue;
}
a[i+1]=a[i+1]+a[i];
count++;
}
System.out.println(count);
}
}
下一篇: P1616 疯狂的采药