某公司公司有4个项目组,项目组A、B、C、D,项目组A现有10人,项目组B现有7人,项目组C组现有5人,项目组D现有4人,为了实现跨项目组协作,公司决定每月从人数最多的项目组中抽调3人出来,到其他剩下3组中,每组1人,这称之为一次调整优化(亦即经过第一次调整后,A组有7人,B组有8人,C组有6人,D组有5人)
那么请问,经过十年的优化调整后,各项目组各有几人?
[8, 5, 7, 6]
状态0: [7,8,6,5]
状态1: [8,5,7,6]
状态2: [5,6,8,7]
状态3: [6,7,5,8]
状态0: [7,8,6,5]
除去第一次优化达到状态0,四次优化为一个周期。
十年120次优化,(120-1)%4=3,就是状态3咯。
import java.util.Arrays;
public class TeamCount {
public static void main(String[] arg) {
int[] memberNumber = { 10, 7, 5, 4 };
int[] temp = new int[memberNumber.length];
int year = 10*12;
while (year > 0) {
temp = memberNumber.clone();
// System.out.println(Arrays.toString(memberNumber));
Arrays.sort(temp);
// System.out.println(Arrays.toString(temp));
for (int i = 0; i < memberNumber.length; i++) {
// System.out.println(memberNumber[i]);
if (memberNumber[i] == temp[0]) {
// System.out.println("temp[0]="+temp[0]+":memberNumber[i]="+memberNumber[i]);
memberNumber[i] = memberNumber[i] + 1;
// System.out.println(memberNumber[i]);
} else if (memberNumber[i] == temp[1]) {
// System.out.println("temp[1]="+temp[1]+":memberNumber[i]="+memberNumber[1]);
memberNumber[i] = memberNumber[i] + 1;
} else if (memberNumber[i] == temp[2]) {
// System.out.println("temp[2]="+temp[2]+":memberNumber[i]="+memberNumber[i]);
memberNumber[i] = memberNumber[i] + 1;
} else if (memberNumber[i] == temp[3]) {
// System.out.println("temp[3]="+temp[3]+":memberNumber[i]="+memberNumber[i]);
memberNumber[i] = memberNumber[i] - 3;
// System.out.println("- 3:"+memberNumber[i]);
}
year--;
}
}
System.out.println(Arrays.toString(memberNumber));
}
}
输出:[5, 6, 8, 7]
public class TeamAdjustTest {
public static void main(String[] args) {
int[] teams = {10, 7, 5, 4};
int month = 10 * 12;
int len = teams.length;
for (int i = 0; i < month; ++i) {
//人数最多的队伍
int maxTeam = 0;
//人数最多的队伍所在索引
int maxIndex = 0;
for (int k = 0; k < len; ++k) {
int t = teams[k];
if (t > maxTeam) {
maxTeam = t;
maxIndex = k;
}
}
for (int k = 0; k < len; ++k) {
if (k == maxIndex) {
teams[k] -= 3;
} else {
++teams[k];
}
}
}
//[6, 7, 5, 8]
System.err.println(Arrays.toString(teams));
}
}