去重排序
2016-03-09 12:48
274 查看
Description
有N个1到1000之间的整数(1≤N≤100),对于其中重复的数,只保留一个,把其余相同的数去掉。然后再按照个位数字进行升序排序,如果个位数字相同,则小的数排在前面。
##
input
第1行:整数T(1≤T≤10)为问题数。
第2 ∽ 2*T+1行:每一个问题两行,第一行整数个数N,第二行N个用一个空格分隔的正整数。
Output
对于每个问题,输出一行问题的编号(0开始编号,格式:case #0: 等),然后在一行中输出经去重和排序后的正整数,两个数之间用一个空格分隔。最后一个数后没有空格。行末尾输出一个换行符。
Sample Input
2
10
20 40 32 67 40 20 89 300 400 15
18
2 1 2 1 2 1 2 1 20 20 40 32 67 40 89 300 400 15
Sample Output
case #0:
20 40 300 400 32 15 67 89
case #1:
20 40 300 400 1 2 32 15 67 89
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; bool cmp(int a,int b) { if(a%10!=b%10) return a%10<b%10; else return a<b; } int main() { int T,i,j,m,k=-1; int list[1001],s[100]; for(i=0;i<1001;i++) list[i]=0; scanf("%d",&T); while(T--) { k++; int n; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); if(list[m]!=1) list[m]=1; } for(i=0,j=0;i<1001;i++) { if(list[i]==1) s[j++]=i; } sort(s,s+j,cmp); printf("case #%d:\n",k); for(i=0;i<j;i++) { if(i!=j-1) printf("%d ",s[i]); else printf("%d\n",s[i]); } } return 0; }
相关文章推荐
- [转]关于实时推送系统的那点事
- [转]浅谈Web缓存
- 编程格式
- javascript数据类型
- [置顶] (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- 学习进度条
- Windows下Redis的安装使用
- 如何优化Java垃圾回收机制
- 杭电1711
- linux的安装步骤和安装过程中需要注意的细节图解
- java的异常处理
- 【LeetCode】234. Palindrome Linked List
- leetcode 79. Word Search | Java最短代码实现
- 蓝桥杯_算法训练《大小写转化》
- [转]缓存、缓存算法和缓存框架简介
- 彻底理解ThreadLocal
- 第二周项目一 ———宣告“主权”
- 如何用代码控制以不同屏幕方向打开新页面【iOS】
- 关于svn目录地址迁移
- js实现textarea选中文字并加粗