编程题
### 问题描述 你有一个初始大小为 $N$ 的数组,所有元素都是 $0$。你需要通过一系列操作将其转换为目标数组。操作规则如下: 1. 选择数组中的任意一个等于 $0$ 的元素。 2. 如果该元素的相邻元素都不是 $1$,那么该元素变成 $1$。 3. 如果至少有一个相邻元素是 $1$ 且没有相邻元素是 $2$,那么该元素变成 $2$,同时所有相邻的 $1$ 变成 $0$。 4. 如果一个相邻元素是 $1$ 另一个是 $2$,那么该元素变成 $3$,同时相邻的元素都变成 $0$。 给定一个目标数组,找出最少的操作次数,使得初始数组变为目标数组。 ### 输入格式 第一行包含一个整数 $N$。 第二行包含 $N$ 个整数,表示目标数组的元素。 ### 输出格式 如果没有解决方案输出 `-1`。 否则,第一行输出一个整数 $K$,代表选择操作的最小次数。 第二行输出 $K$ 个整数,代表被选择元素的索引。 ### 样例输入 ``` 3 2 1 2 ``` ### 样例输出 ``` 5 2 1 2 3 2 ``` ### 评测数据规模 - $1 \leq N \leq 10^5$ - 目标数组中的元素为 $0$ 到 $3$ 之间的整数。
查看答案
赣ICP备20007335号-2