蓝桥杯:矩阵乘法这篇代码中,为什么要三层循环?while(k--)和把k--放在循环里面有什么区别? - 爱问答

(爱问答)

蓝桥杯:矩阵乘法这篇代码中,为什么要三层循环?while(k--)和把k--放在循环里面有什么区别?

完整代码如下,第32行的while循环,为什么还要这一层循环?while(k--)和把k--放在循环里面有什么区别?


#include <iostream>

using namespace std;

long long int b[40][40];

int main() {

    int n, m;

    cin >> n >> m;

    long long int a[40][40];

    long long int t[40][40];

    for(int i = 0; i < n; i++) {

        for(int j = 0; j < n; j++) {

            cin >> a[i][j];

            t[i][j] = a[i][j];

        }

    }

    if(m == 0) {

        for(int i = 0; i < n; i++) {

            for(int j = 0; j < n; j++) {

                if(i != j) {

                    cout << 0 << " ";

                } else {

                    cout << 1 << " ";

                }

            }

            cout << endl;

        }

        return 0;

    }

    while(--m) {

        for(int i = 0; i < n; i++) {

            for(int j = 0; j < n; j++) {

                int k = n;

                while(k) {

                    b[i][j] += t[i][k-1] * a[k-1][j];

                    k--;

                }

            }

        }

        for(int i = 0; i < n; i++) {

            for(int j = 0; j < n; j++) {

                t[i][j] = b[i][j];

                b[i][j] = 0;

            }

        }

    }

    for(int i = 0; i < n; i++) {

        for(int j = 0; j < n; j++) {

            cout << t[i][j] << " ";

        }

        cout << endl;

    }

    return 0;

}


当然有区别,while(k--)k在进入循环后就减了一,后者是在循环结束后减一。k用作表达式,其值与结果有关,但是循环次数是一样的,。

下一篇:在网上下载BIOS升级程序,工具是否打包在升级程序一体?若否,则工具如何下载?

上一篇:我使用的是Devc++;为什么A此处编译错误,书上是这样的

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?