1002: 数字排序问题
来源:互联网 发布:学编程需要考哪些证书 编辑:程序博客网 时间:2024/05/21 15:44
1002: 数字排序问题
时间限制: 1 Sec 内存限制: 256 MB提交: 334 解决: 236
[提交][状态][讨论版]
题目描述
给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
输入
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出
输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
样例输入
125 2 3 3 1 3 4 2 5 2 3 5
样例输出
3 42 35 31 14 1
方法一:
#include<iostream>using namespace std;struct A{int times;int number;};int main(){int n;cin>>n;A a[1000];for(int i=0;i<n;i++){cin>>a[i].number;a[i].times=1;}for(int i=1;i<n;i++) //先将输入的数字排序使最后次数相同时,按数字从小到大输出{int j=i;int temp=a[i].number;while(j>0&&temp<a[j-1].number){a[j].number=a[j-1].number;j--;}a[j].number=temp;}for(int i=0;i<n-1;i++) //遍历数组使相同数字的次数累加,已经记过的将次数赋为-1避免重复{for(int j=i+1;j<n;j++){if(a[i].times!=-1&&a[j].times!=-1&&a[i].number==a[j].number){a[i].times++;a[j].times=-1;}}}for(int i=1;i<n;i++) //将次数兼对应的数字从大到小排序,{int j=i;int temp1=a[i].times;int temp2=a[i].number;while(j>0&&temp1>a[j-1].times){a[j].times=a[j-1].times;a[j].number=a[j-1].number;j--;}a[j].times=temp1;a[j].number=temp2;}for(int k=0;k<n;k++){if(a[k].times!=-1)cout<<a[k].number<<" "<<a[k].times<<endl;}return 0;}
方法二:
#include<iostream>#include<algorithm>#include<vector>using namespace std;struct A{int times;int number;};int main(){int n;cin>>n;A a[n];vector<int>iv(n); //创建动态数组for(int i=0;i<n;i++)cin>>iv[i];for(int i=1;i<n;i++) //排序{int j=i;int temp=iv[i];while(j>0&&temp<iv[j-1]){iv[j]=iv[j-1];j--;}iv[j]=temp;}int k=0; //计数for(int i=0;i<n;i++){if(iv[i]!=iv[i+1]) //将重复的数字剔除{a[k].number=iv[i];a[k].times=count(iv.begin(),iv.end(),iv[i]); //用于清点特定值的个数并将结果赋给结构k++;}}for(int i=1;i<k;i++) //最后将结构中的次数排序即可输出{int j=i;int temp1=a[i].times;int temp2=a[i].number;while(j>0&&temp1>a[j-1].times){a[j].times=a[j-1].times;a[j].number=a[j-1].number;j--;}a[j].times=temp1;a[j].number=temp2;}for(int i=0;i<k;i++){if(a[i].number==a[i+1].number)continue;cout<<a[i].number<<" "<<a[i].times<<endl; }return 0;}
1 1
- 1002: 数字排序问题
- 数字排序问题
- 数字排序问题
- 数字排序问题
- 问题 C: 数字排序问题
- oracle中数字排序问题
- 数字去重排序问题
- 字母数字汉字排序问题
- 毕晓英415 数字排序问题
- 关于十数字排序问题
- 数字排序问题(c++)
- 数组排序问题(数字字符串排序)
- HNU OJ题库 1002C数字排序问题
- 按字符串中的数字排序问题
- displaytag数字排序问题的解决方法
- xsl按数字排序的问题
- Collection.sort()排序之数字前缀问题
- 按字符串中的数字排序问题
- CCS5 Debug出错 @load program error. Encoutered a problem loading file:...\LED.out could not open file.
- 日常生活 -- 感悟
- 窗口宽高和坐标
- POJ 2965 The Pilots Brothers' refrigerator 记忆化搜索
- 《时代三部曲》感悟四
- 1002: 数字排序问题
- leetcode(55):Jump Game
- R语言为Hadoop注入统计血脉
- gcc install in CentOS
- poj2488(dfs)
- 内核中的机制的困惑
- c++
- #ifndef_code_#endif简析
- shell脚本编程基础篇——几个特殊符号