前言
题目很简单,写下此篇 为了 以后碰到这种题 不要犯sb问题
思路
题目 说 是两数之和 为 奇数才能 交换
所以我们就要考虑什么 情况下 和为 奇数
- 偶数+ 偶数 = 偶数
- 奇数+ 奇数 = 偶数
- 奇数+ 偶数 =奇数
想了一下之后又发现 最坏情况下只有 一个奇数的情况下
会发现这种情况下 我们都可以随意交换
于是答案就出来了
- 如果全为奇数或者偶数 那么 我们输出原序列
- 否则 我们直接排序后输出即可
Code
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int n,m,a[N];
void solve()
{
cin>>n;
int f1 = 0,f2 = 0 ;
for(int i = 1; i<=n; i++)
{
cin>>a[i];
if(a[i]&1)
f1++;
else
f2++;
}
if(f1 == n|| f2 == n)
for(int i = 1; i<=n; i++)
cout<<a[i]<<" ";
else
{
sort(a+1,a+1+n);
for(int i =1 ; i<=n; i++)
cout<<a[i]<<" ";
}
}
int main()
{
solve();
return 0;
}