華為機試練習題 21 二維陣列的列排序

2021-09-02 11:52:29 字數 1563 閱讀 1007

題目

描述:     

給出乙個二維陣列,請將這個二維陣列按第i列(i從1開始)排序,如果第i列相同,則對相同的行按第i+1列的元素排序,如果第i+1列的元素也相同,則繼續比較第i+2列,以此類推,直到最後一列。如果第i列到最後一列都相同,則按原序排列。

實現以下介面:

輸入乙個m*n 的整數陣列,實現按規則排列,返回排列後的陣列。

呼叫者會保證:

比如輸入陣列為:

1,2,3

2,3,4

2,3,1

1,3,1

按第二列排序:

輸出:

1,2,3

2,3,1

1,3,1

2,3,4

練習階段: 初級

**

/*---------------------------------------

* 日期:2015-06-30

* 題目:二維陣列的列排序

-----------------------------------------*/

#include

#include

#include "oj.h"

using

namespace

std;

// 功能:排列乙個m行n列 大小的陣列

// 輸入: int * parray 指向陣列第乙個元素的指標,m為行數, n為列數 ,請按第i列排列

// 返回:

int sortindex = 0;

int col = 0;

// 按列排序

bool cmp(const

vector

&a, const

vector

&b)//for

else//for

return a[col-1] < b[col-1];

}void rangearray(int * parray,unsigned

int m, unsigned

int n,unsigned

int i)//if

sortindex = i;

col = n;

// 一行

vector

rowvec;

vector

> matrix;

int *array = parray;

// 存放在vector

for(int i = 0; i < m; i++)//for

matrix.push_back(rowvec);

rowvec.clear();

}//for

// 排序

sort(matrix.begin(),matrix.end(),cmp);

// 排序後的資料放入parray

array = parray;

for(int i = 0; i < m;++i)//for

}//for

}

華為機試練習題1

題目描述 有這樣一道智力題 某商店規定 三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?答案是5瓶,方法如下 先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以...

華為機試練習題 28 報數

題目 描述 有n個人圍成一圈,順序排號。從第乙個人開始報數 從1到3報數 凡報到3的人退出,問最後留下的那位是原來第幾號。題目類別 陣列,指標難度 初級執行時間限制 10sec記憶體限制 128mbyte階段 入職前練習輸入 使用標準輸入stdio.多行,每行一組資料。輸出 多行,每行對應求和結果。...

華為機試練習題 18 矩陣相乘

題目 描述 題目描述 矩陣相乘 輸入 兩個n n階矩陣相乘 輸出 結果矩陣 樣例輸入 樣例輸出 介面說明 原型 int matrix int matrixa,int matrixb,int matrixc,int n 輸入引數 int matrixa 指向二維陣列a int matrixb 指向二維...