algorithm - 遍历矩阵中的所有主要对角线,包括主对角线
问题描述
如何遍历矩阵中的所有对角线?有类似的问题,比如这个,但他们只是计算总和。我需要通过所有对角线执行某些操作,而不仅仅是求和。为了清楚起见,我需要像图片中那样遍历它:
我想出了这个解决方案,但它很糟糕:
for(int j = 0; j < m; j++) {
for(int i = 0; i < n && i + j < m; i++) {
cout << matrix[i][i + j] << " ";
}
cout << endl;
}
for(int i = 1; i < n; i++) {
for(int j = 0; j < m && i + j < n; j++) {
cout << matrix[j + i][j] << " ";
}
cout << endl;
}
对于矩阵 n*m,我首先从主对角线向右遍历每个对角线,然后从主对角线向左遍历,但这个解决方案对我来说似乎很难看。
解决方案
您可以以模运算为代价使用更简单的迭代:
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << a[(i+j)%n][j] << " ";
}
cout << endl;
}
推荐阅读
- reactjs - 安装 react-redux@5.0.7 时遇到错误
- r - mtc.nodesplit error / Error in data[, "study"] == study : 未实现这些类型的比较
- android - FCM 通知在发布应用程序中不起作用
- django - 如何在 F 表达式中使用 jsonfield?
- python - Keras OCR 是否支持其他语言?
- java - 在运行 wildfly 的服务器(RHE7)上部署战争后出现 ClassNotFound 异常
- java - Firebase 远程配置不适用于 Google Play 上的实时版本
- php - php 中的 substr() 不索引过去的 '<' html 标签
- python - Pandas + BeautifulSoup - 如何在 for 循环下将数据添加到新列但同一行
- php - 加快 Mariadb 中的插入速度