|
发表于 2021-6-13 12:26:43
|
显示全部楼层
本楼为最佳答案
- #include <stdio.h>
- // 根据题目意思,应该是输出两个奇数再输出一个偶数
- // 也可以理解为先输出两个a窗口的,再输出两个b窗口的
- // 一个窗口的输出完,就输出另一个的所有人
- int a[1005]; // a窗口模拟队列
- int b[1005]; // b窗口模拟队列
- int main() {
- int n; // 总数
- scanf("%d", &n);
- // starta 是a队列的开始位置,enda是最后位置
- // startb和endb是b队列的开始位置和最后位置
- int starta = 0, startb = 0, enda = 0, endb = 0;
- for (int i = 0; i < n; i++) {
- int id;
- scanf("%d", &id);
- if (id % 2 == 1) {
- // 奇数,去a窗口
- a[enda++] = id;
- } else {
- // 偶数,去b窗口
- b[endb++] = id;
- }
- }
- // 计数,一共n个数
- int num = 0;
- while (num < n) {
- // 两个a
- if (starta < enda) {
- if (num == 0) {
- printf("%d", a[starta++]);
- } else {
- printf(" %d", a[starta++]);
- }
- num++;
- }
- if (starta < enda) {
- printf(" %d", a[starta++]);
- num++;
- }
- // 一个b
- if (startb < endb) {
- if (num == 0) {
- printf("%d", b[startb++]);
- } else {
- printf(" %d", b[startb++]);
- }
- num++;
- }
- }
- printf("\n");
- return 0;
- }
复制代码 |
|