难得AC 发个代码
//主要思路是记录每个数重复的次数,以及下一个将重复的数是数组中的哪个元素
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int m = sc.nextInt();
int[] a = new int[m];
for (int i = 0; i < m; i++) {
a[i] = sc.nextInt();
}
int[] res = new int[n];
res[0] = a[0];
//这里要判断下第一个数是否为1,如果第一个数是1,需要初始化第二个数,否则后面循环走不下去,而第二个数与第一个数不相等,即不再为1,后面循环就顺利了
if (a[0] == 1) {
res[1] = a[1];
}
int cur = 0;
int flag = 0;
for (int i = 0; i < n;) {
//num表示重复的次数
int num = res[cur];
for (int j = 0; j < num; j++) {
//a[flag]表示正在重复的元素,在每次重复的结尾,将flag指向下一个元素
res[i] = a[flag];
if (j == num - 1) {
if (flag < m - 1) {
flag++;
} else if (flag == m - 1) {
flag = 0;
}
}
i++;
if (i == n) {
break;
}
}
cur++;
}
for (int i = 0; i < n; i++) {
System.out.println(res[i]);
}
}
sc.close();
}