目录:
题目要求:
本题要求实现一个函数,按数据序列中的顺序将奇数和偶数配对输出,如果没全部配对,输出哪类数据多了多少个。
函数接口定义:
void odd_even(int num[], int n);
解释接口参数:其中num
和n
是用户传入的参数。num
表示给定的数据序列(数据为整型),n
表示数据序列中的数据个数;函数无返回值。
裁判测试程序样例:
#include <iostream>
#include <queue>
#include <string>
using namespace std;
void odd_even(int num[], int n); // 要实现的函数
int main()
{
int num[100], n, i;
cin >> n;
for (i = 0; i < n; i++)
cin >> num[i];
odd_even(num, n);
return 0;
}
输入样例:
在这里给出一组输入。例如:
10
5 12 18 3 21 127 4 35 37 82
输出样例:
在这里给出相应的输出。例如:
5 12
3 18
21 4
127 82
奇数多2个:35 37
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/11/2
- 星期三下午16:00
随便写写的答案:
void odd_even(int num[],int n)
{
queue<int> q1,q2;
int i = 0;
while(i<n)
{
if(num[i]%2!=0)
q1.push(num[i]);
else
q2.push(num[i]);
i++;
}
while(!q1.empty() && !q2.empty())
{
cout << q1.front() <<" ";
q1.pop();
cout << q2.front() <<"\n";
q2.pop();
}
if(!q1.empty())
{
cout << "奇数多" << size(q1) << "个:";
while(!q1.empty())
{
cout << q1.front() <<" ";
q1.pop();
}
}
else if(!q2.empty())
{
cout << "偶数多" << size(q2) << "个:";
while(!q2.empty())
{
cout << q2.front() <<" ";
q2.pop();
}
}
}
整体思路:
- 创建两个队列,一个为奇数队列,一个为偶数队列
- 遍历num数组,进入对应的栈,别忘记负数,因为之前这样扣过5分,后面改回来了
- 最后就是对于队列的简单操作,获取长度进行比较以及输出后出队列