【九度】题目1117:整数奇偶排序
来源:互联网 发布:js的prototype是什么 编辑:程序博客网 时间:2024/05/21 11:32
题目描述:
输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求:
1.先输出其中的奇数,并按从大到小排列;
2.然后输出其中的偶数,并按从小到大排列。
输入:
任意排序的10个整数(0~100),彼此以空格分隔。
输出:
可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。
样例输入:
4 7 3 13 11 12 0 47 34 98
样例输出:
47 13 11 7 3 0 4 12 34 98
提示:
1. 测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>...>>a[9])类似的做法来实现;
2. 输入数据随机,有可能相等。
- 来源:
- 2008年北京大学图形实验室计算机研究生机试真题
- 【解题思路】
整体思路比较简单。
有陷阱。
对于Java来说,直接用System.out.println()有可能会超时。
可以用StringBuffer将数据拼接起来然后打印输出,这样会比较省时间。
这在后续很多打印结果中用到。
对于C++来说,要特别注意结果输出。
有可能出现全部都是奇数或者全部都是偶数的情况。
Java是拼接字符串打印输出结果的,全部是奇数和全部都是偶数不会影响。
C++ AC #include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn = 12;int arr1[maxn];int arr2[maxn];int i ; int main(){ int num; int k1; int k2; while(scanf("%d",&num) != EOF){ memset(arr1,0,sizeof(arr1)); memset(arr2,0,sizeof(arr2)); k1 = 0; k2 = 0; if(num % 2 != 0){ arr1[k1] = num; k1++; }else{ arr2[k2] = num; k2++; } for(i = 1; i < 10 ; i++){ scanf("%d",&num); if(num % 2 != 0){ arr1[k1] = num; k1++; }else{ arr2[k2] = num; k2++; } } sort(arr1, arr1+k1); sort(arr2, arr2+k2); if(k1 != 0 && k2 != 0){ for(i = k1-1; i >= 0 ; i--){ printf("%d ",arr1[i]); } for(i = 0; i < k2-1 ; i++){ printf("%d ",arr2[i]); } printf("%d\n",arr2[k2-1]); }else if(k1 != 0){ for(i = k1-1; i > 0 ; i--){ printf("%d ",arr1[i]); } printf("%d\n",arr1[0]); }else{ for(i = 0; i < k2-1 ; i++){ printf("%d ",arr2[i]); } printf("%d\n",arr2[k2-1]); } } return 0;}/************************************************************** Problem: 1117 User: wangzhenqing Language: C++ Result: Accepted Time:40 ms Memory:1020 kb****************************************************************/
Java AC
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.StreamTokenizer;import java.util.ArrayList;import java.util.Collections;import java.util.List; public class Main { /* * 1061 */ public static void main(String[] args) throws Exception { StreamTokenizer st = new StreamTokenizer(new BufferedReader( new InputStreamReader(System.in))); while (st.nextToken() != StreamTokenizer.TT_EOF) { int num = 0; List<Integer> arrList1 = new ArrayList<Integer>(); List<Integer> arrList2 = new ArrayList<Integer>(); for (int i = 0; i < 10; i++) { num = (int) st.nval; if (num % 2 != 0) { arrList1.add(num); } else { arrList2.add(num); } if (i != 9) { st.nextToken(); } } Collections.sort(arrList1); Collections.sort(arrList2); int len1 = arrList1.size(); int len2 = arrList2.size(); StringBuffer sb = new StringBuffer(); for (int i = len1-1; i >= 0 ; i--) { sb.append(arrList1.get(i)+" "); } for (int i = 0; i < len2; i++) { sb.append(arrList2.get(i)+" "); } System.out.println(sb.toString().trim()); } }} /************************************************************** Problem: 1117 User: wangzhenqing Language: Java Result: Accepted Time:1350 ms Memory:82300 kb****************************************************************/
- 【九度】题目1117:整数奇偶排序
- 九度OJ 题目1117:整数奇偶排序
- 九度OJ 题目1117:整数奇偶排序
- 九度OJ题目1117整数奇偶排序解题报告
- 九度oj-1117-整数奇偶排序
- 题目1117:整数奇偶排序
- 题目1117:整数奇偶排序
- 题目1117:整数奇偶排序
- 题目1117:整数奇偶排序
- 题目1117:整数奇偶排序
- 题目1117:整数奇偶排序
- 九度OJ 1117:整数奇偶排序 (排序)
- 题目1117:整数奇偶排序 C++/Java
- 【九度】题目1190:大整数排序
- 九度题目1190:大整数排序
- 九度题目1190:大整数排序
- 【九度OJ】题目1190:大整数排序 解题报告
- 题目1190:大整数排序 九度OJ
- 获取整个页面文档的大小
- Kdevelop使用
- 轻松掌握抽象类
- MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver to Mysql
- 那天有个小孩跟我说LINQ(二)
- 【九度】题目1117:整数奇偶排序
- 获取由于滚动条的拖动而卷走的部分的大小
- Java NIO Channel to Channel Transfers
- ubuntu12.04没有声音解决方案
- mysql时间列自动插入当前日期时间
- Android 之 Monkey
- CAS单点登录
- 风机叶轮平衡机概述
- wamp覆盖安装后出现的一点问题