当前位置:   article > 正文

深入理解计算机系统 CSAPP 家庭作业6.46

深入理解计算机系统 CSAPP 家庭作业6.46

理解题意:G是有向图g的邻接矩阵

G[j*dim + i] = G[j*dim + i] || G[i*dim + j];

通过i和j遍历G中的所有元素,||运算将遍历到的元素对称起来.

下面我们来优化col_convert(int *G, int dim) :

  1. void col_convert(int N, int G[N][N], int bsize) {
  2. if(bsize <= 0 || bsize > N) {
  3. return;
  4. }
  5. int i, j, kk, jj;
  6. // Iterate over matrix blocks
  7. for (kk = 0; kk < N; kk += bsize) {
  8. for (jj = kk; jj < N; jj += bsize) {//处理一半就行,因为下方一次循环赋值两次
  9. for (i = kk; i < kk + (N - kk < bsize ? N - kk : bsize); i++) {
  10. for (j = jj; j < jj + (N - jj < bsize ? N - jj : bsize); j++) {
  11. bool temp = G[j][i] || G[i][j];
  12. G[j][i] = temp;
  13. G[i][j] = temp;两个对角线的变量都改了,所以只需要遍历一半的元素
  14. }
  15. }
  16. }
  17. }
  18. }

||运算的结果只有0和1

|运算的结果不只有0和1

哈哈 第六章结束咯

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/757830
推荐阅读
相关标签
  

闽ICP备14008679号