-
题目描述:
-
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
-
输入:
-
每个输入文件包含一组测试案例。
对于每个测试案例,第一行输入一个n,代表该数组中数字的个数。
接下来的一行输入n个整数。代表数组中的n个数。
-
输出:
-
对应每个测试案例,
输入一行n个数字,代表调整后的数组。注意,数字和数字之间用一个空格隔开,最后一个数字后面没有空格。
样例输入:
5 1 2 3 4 5
样例输出:
1 3 5 2 4
【解题思路】本题的思路还是比较简单的,对输入的每一个元素都进行判断,若是奇数则直接输出;如是偶数则存入vector中等后续处理。中间只需要对第一个元素的输出格式进行一下特殊处理即可。
AC code:
题目链接:http://ac.jobdu.com/problem.php?pid=1516#include <cstdio> #include <vector> using namespace std; int main() { int n,a; scanf("%d",&n); if(n<=0) return 0; vector<int> vec2; bool prt=false; for(int i=0;i<n;++i) { scanf("%d",&a); if(a%2==1 && prt) printf(" %d",a); else if(a%2==1 && !prt) { prt=true; printf("%d",a); }else vec2.push_back(a); } int i1=0,i2=0; if(!prt) printf("%d",vec2[i2++]); for(;i2<vec2.size();++i2) printf(" %d",vec2[i2]); return 0; } /************************************************************** Problem: 1516 User: huo_yao Language: C++ Result: Accepted Time:70 ms Memory:1416 kb ****************************************************************/
九度-剑指Offer全套习题答案下载:http://download.csdn.net/detail/huoyaotl123/8276299