C++多维排序
来源:互联网 发布:淘宝如何申请海外买手 编辑:程序博客网 时间:2024/05/16 06:53
明明的成绩表(Sort.cpp/pas)
【时限1s,内存128M】
所以....
输入格式:
第一行2个整数N,M
第2行到第N+1行,每行M个整数(某个学生的信息),代表了学生的班级,座号,身高,体重....等等
输出格式:
N*M的矩阵
把排序完的表输出(第一列为第一排序,第二列为第二排序...以此类推)
(详见Excel的自定义排序)
样例输入:
4 3
1 5 4
5 2 1
5 2 4
1 4 5
样例输出:
1 4 5
1 5 4
5 2 1
5 2 4
数据范围:
对于30%的数据满足:1<=n,m<=10
对于60%的数据满足:1<=n,m<=100
【时限1s,内存128M】
题目描述:
所以....
输入格式:
第一行2个整数N,M
第2行到第N+1行,每行M个整数(某个学生的信息),代表了学生的班级,座号,身高,体重....等等
输出格式:
N*M的矩阵
把排序完的表输出(第一列为第一排序,第二列为第二排序...以此类推)
(详见Excel的自定义排序)
样例输入:
4 3
1 5 4
5 2 1
5 2 4
1 4 5
样例输出:
1 4 5
1 5 4
5 2 1
5 2 4
数据范围:
对于30%的数据满足:1<=n,m<=10
对于60%的数据满足:1<=n,m<=100
对于100%的数据满足:1<=n,m<=2000
分析:多维排序的裸题
直接贴上代码AC代码
#include<cstdio>using namespace std;struct tree{int b[3000];}a[3000];int n,m;void swap(int x,int y)//x行与y行交换 {for(int i=1;i<=m;i++){a[0].b[i]=a[x].b[i];a[x].b[i]=a[y].b[i];a[y].b[i]=a[0].b[i];}}void DIYsort(int left,int right,int now)//排序从第left行到第right行需要排序的数组的第now项 {//now表示当前处理到第now列 int i=left,j=right;int mid=a[(i+j)>>1].b[now];do{while(a[i].b[now]<mid)i++;while(mid<a[j].b[now])j--;if(i<=j){swap(i,j);i++;j--;}}while(i<=j);if(left<j)DIYsort(left,j,now);if(i<right)DIYsort(i,right,now);} void creat(int l,int r,int now)//对数组的排序另外处理 {//(第now列排序完成后,将now列的相同的归位一类,然后递归将这类继续往下排序) DIYsort(l,r,now);int left=l,right=-1;for(int i=l;i<=r;i++){if(a[i].b[now]==a[left].b[now])right++;else{if(right>0)creat(left,left+right,now+1);left=i;right=0;}}if(right>0)creat(left,left+right,now+1);}int fi()//因为规模很大, 需要快速读入{char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();int aq=0;while(ch>='0'&&ch<='9'){aq=aq*10+ch-'0';ch=getchar();}return aq;}void read()//读入,调用到快速读入 {scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i].b[j]=fi();}void fo(int aq)//因为规模很大, 需要快速输出{if(aq>=10)fo(aq/10);putchar(aq%10+'0');}void print()//打印排序好的矩阵 {for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){fo(a[i].b[j]);putchar(32);}printf("\n");}}int main(){read();//读入 creat(1,n,1);//排序 print();//输出 return 0;}
0 0
- 多维数组 排序
- PHP多维数组排序
- php 多维数组排序
- 多维数组排序
- PHP多维数组排序
- C++多维排序
- php多维数组排序
- php多维数组排序
- php 多维数组排序
- PHP多维数组排序
- PHP多维数组排序
- PHP多维数组排序
- 多维数组排序
- 多维数组排序 array_multisort()
- PHP:多维数组排序
- PHP多维数组排序
- 多维数组排序
- php 多维数组排序
- 跳进程序媛这个坑
- 题目:在二叉查找树中插入节点
- 给中国学生的第七封信:21世纪最需要的7种人才
- UVA 674 - Coin Change
- 题目:奇偶分割数组
- C++多维排序
- uva 1623 - Enter The Dragon
- 内存碎片和内存泄露
- 题目:子数组之和
- server 2008 80端口无法关闭
- 什么是进程
- Maximum Gap
- Swift开发教程--如何给UITextView添加圆角边框
- ItailorCode