赞
踩
矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线,沿右下方向一直到矩阵末尾的元素。例如,矩阵 mat 有 6 行 3 列,从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。
给你一个 m * n 的整数矩阵 mat ,请你将同一条 矩阵对角线 上的元素按升序排序后,返回排好序的矩阵。
第一行输入两个整数m和n
接下来输入一个 m * n 的整数矩阵 mat
输出排好序的矩阵
样例输入 1
复制- 3 4
- 3 3 1 1
- 2 2 1 2
- 1 1 1 2
样例输出 1
复制- 1 1 1 1
- 1 2 2 2
- 1 2 3 3
样例输入 2
复制- 5 6
- 11 25 66 1 69 7
- 23 55 17 45 15 52
- 75 31 36 44 58 8
- 22 27 33 25 68 4
- 84 28 14 11 5 50
样例输出 2
复制- 5 17 4 1 52 7
- 11 11 25 45 8 69
- 14 23 25 44 58 15
- 22 27 31 36 50 66
- 84 28 75 33 55 68
m == mat.length
n == mat[i].length
1 <= m, n <= 100
1 <= mat[i][j] <= 100
____________________________________________________________________________
日常发作业题解。
总结就是斜着冒泡
也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
____________________________________________________________________________
- #include <bits/stdc++.h>
- using namespace std;
- int a[10005][10005];
- int n,m;
- int main(){
- cin>>n>>m;
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- cin>>a[i][j];
- }
- }
- for(int i=n;i>=1;i--){
- int flag=false;
- while(flag==false){
- flag=true;
- int x=i,y=1;
- while(x<n&&y<m){
- x++,y++;
- if(a[x-1][y-1]>a[x][y])
- swap(a[x-1][y-1],a[x][y]),flag=false;
- }
- }
- }
- for(int i=2;i<=m;i++){
- int flag=false;
- while(flag==false){
- flag=true;
- int x=1,y=i;
- while(x<n&&y<m){
- x++,y++;
- if(a[x-1][y-1]>a[x][y])
- swap(a[x-1][y-1],a[x][y]),flag=false;
- }
- }
- }
- for(int i=1;i<=n;i++){
- for(int j=1;j<=m;j++){
- cout<<a[i][j]<<" ";
- }
- cout<<endl;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。