c - 按照每行中相等元素数的升序对数组的行进行排序
问题描述
行数、列数和元素数由用户引入。
在 C 中
例如,我有数组:
1 1 0 3
2 0 0 0
2 3 4 5
3 3 3 3
它应该显示为:
2 3 4 5
1 1 0 3
2 0 0 0
3 3 3 3
现在我被困住了。如果有任何相等的元素,我试图给每一行一个“1”,然后我想总结这些数字,并以此为基础对行进行排序。我想过把每一行都变成一个数组,比较相等的元素,然后重新排列它们,但我不知道该怎么做。
我目前拥有的部分代码:
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (int k = j + 1; k < m; k++) {
if (tab[i][j] == tab[i][k]) {
k1++;
if (k1 > 1) {
k1--;
}
printf("a[%d]%d\n", i, k1);
}
}
}
}
解决方案
我认为您应该使用某种数据结构来存储您在每一行中找到的重复数字,以便您在遍历整个输入矩阵后可以查阅它。
解决方案可能包括创建一个R x 10
矩阵,其中R
是输入矩阵中的行数。在每一列中,您存储给定行中该索引处的数字的重复次数。
对于您的输入,您应该得到如下结果:
1 2 0 1 0 0 0 0 0 0
3 0 1 0 0 0 0 0 0 0
0 0 1 1 1 1 0 0 0 0
0 0 0 4 0 0 0 0 0 0
此时,您可以根据包含最大数字的行对行进行排序。
显然可能还有其他解决方案,但我认为这个在概念上足够简单。
推荐阅读
- c++ - 如何在 Qt5 中使用带有模型/视图/委托的自定义小部件?
- python - TensorFlow ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)
- sql - 在 Redshift 物化视图中使用 current_date
- assembly - 你能在 MARS 软件中将代码从 c++ 传递到汇编语言吗?
- sql - 存储过程插入和更新语句工作但受影响的行是-1?
- inno-setup - Inno Setup - 将自定义按钮与取消按钮对齐
- kubernetes - Kubernetes:在应用命令中指定集群上下文
- mysql - 是否可以使用公共 IP 将 WordPress 网站(托管在 GoDaddy 上)连接到 Google Cloud Platform 实例?
- session - HttpServletRequest 获取新会话
- flask - Flask/Connexion 应用 XHR PUT TypeError:缺少 1 个必需的位置参数