700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 网易游戏雷火春招游戏研发工程师笔试题

网易游戏雷火春招游戏研发工程师笔试题

时间:2023-08-17 23:05:27

相关推荐

网易游戏雷火春招游戏研发工程师笔试题

题目输入为第一行数字: N,M,T

此后的N行,每行M个数字。

此后T行,输入r1,r2,c1,c2,S,A

题目要求:对给定的一个N行M列的数组,进行T次局部排序,输出局部排序后数组。

排序规则为,对r1行到r2行的第c1列到第c2列的数据 根据指定的第S列进行排序,如果A==0则从小到大排序,A==1则从大到小排序。

输出排序后完整的数组。

例子:

输入:4 4 11 2 3 4 5 6 7 89 10 11 1213 14 15 162 3 2 3 3 1输出:1 2 3 4 5 10 11 89 6 7 1213 14 15 16

代码如下:通过率100%

#include <iostream>#include <algorithm>#include <vector>;using namespace std;bool compA1(vector<int> a, vector<int> b,int s) {return a[s] > b[s];}int main() {int N, M, T;cin >> N >> M >> T;vector<vector<int>> data(N);for (int i = 0; i < N;i++) {for (int j = 0; j < M; j++) {int num;cin >> num;data[i].push_back(num);}}while (T--) {int r1, r2, c1, c2;int s;int A;cin >> r1 >> r2 >> c1 >> c2 >> s >> A;int len = r2 - r1 + 1;int lenM = c2 - c1 + 1;r1 -= 1;c1 -= 1;vector<vector<int>> newdata(len);for (int i = 0; i < len;i++) {for (int j = 0; j < lenM;j++) {newdata[i].push_back(data[r1+i][c1+j]);}}s = s - c1-1;for (int i = 0; i < len;i++) {for (int j = i; j < len; j++) {if (A == 0) {if (newdata[i][s] > newdata[j][s]) {vector<int> tmp;tmp = newdata[i];newdata[i] = newdata[j];newdata[j] = tmp;}}else {if (newdata[i][s] < newdata[j][s]) {vector<int> tmp;tmp = newdata[i];newdata[i] = newdata[j];newdata[j] = tmp;}}}}for (int i = r1; i < r2;i++) {for (int j = c1; j < c2;j++) {data[i][j] = newdata[i - r1][j - c1];}}}for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {cout << data[i][j] << " ";}cout << endl;}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。