注意事项:需要先用一个change数组记录变化,不能直接对原数组进行修改
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int [] can = new int[n];
for(int i = 0;i < n ;i++) {
can[i] = in.nextInt();
}
int [] change = new int[n];
int sum = 0;
while(!over(can)) {
for(int i = 0;i<n;i++) {
change[i]=can[(i+1+n)%n]/2-can[(i+n)%n]/2; //考虑到第一个和最后一个的特殊情况,有点类似循环队列的感觉
}
for(int i = 0;i<n;i++) {
can[i]+=change[i];
if(can[i]%2!=0) {
can[i]++;
sum++;
}
}
}
System.out.println(sum);
}
public static boolean over(int[] arr) {
for(int i = 1;i<arr.length;i++) {
if(arr[i]!=arr[0]) {
return false;
}
}
return true;
}
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:595 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:759 |
WU-蓝桥杯算法提高VIP-交换Easy (C++代码)浏览:1119 |
printf基础练习2 (C语言代码)浏览:646 |
求圆的面积 (C语言代码)浏览:1670 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:956 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:610 |
小O的乘积 (C++代码)浏览:755 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:1002 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:360 |