【正经题解】必AC
2026-09-19 14:48:09
发布于:广东
9阅读
0回复
0点赞
妙脆角提供
声明变量
//建议在外面声明
const int N = 1005;
int a[N][N];
int n, m;
输入
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cin >> a[i][j];
}
}
}
完全不需要看的 重点 部分
我们先用另一个变量来存储每一行并对其进行排序,
排序完成后再把它和原来的一行进行替换操作。
int a2[1005];
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
a2[j] = a[i][j];
}
sort(a2, a2 + m);
for (int j = 0; j < m; j++){
a[i][j] = a2[j];
}
}
假如输入样例2,这样我们就可以得到
1235
2446
1345
接着对竖着的进行排序操作
for (int j = 0; j < m; j++){
for (int i = 0; i < n; i++){
a2[i] = a[i][j];
}
sort(a2, a2 + n);
for (int i = 0; i < n; i++){
a[i][j] = a2[i];
}
}
a2就会变成
1 2 3 5
1 3 4 5
2 4 4 6
最后输出即可
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
完整代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int a[N][N];
int n, m;
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cin >> a[i][j];
}
}
int a2[1005];
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
a2[j] = a[i][j];
}
sort(a2, a2 + m);
for (int j = 0; j < m; j++){
a[i][j] = a2[j];
}
}
for (int j = 0; j < m; j++){
for (int i = 0; i < n; i++){
a2[i] = a[i][j];
}
sort(a2, a2 + n);
for (int i = 0; i < n; i++){
a[i][j] = a2[i];
}
}
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
}
—————————————————————学会了吗?给个关注和赞吧!求求了qwq————————————————————————
全部评论 2

昨天 来自 广东
2学会了吗
昨天 来自 广东
2hello
10小时前 来自 广东
0



有帮助,赞一个