for(i=1;i<=n;++i) for(j=1;j<=n;j++) {c[i][j]=0; for(k=1;k<=n;++k) c[i][j]+=a[i][k]*b[k][j];
答案:2 悬赏:0
解决时间 2021-02-28 15:43
- 提问者网友:情系雨樱花
- 2021-02-28 09:40
求出它的时间复杂度
最佳答案
- 二级知识专家网友:我颠覆世界
- 2021-02-28 10:12
先整理一下:
for(i=1;i<=n;++i) // 重复n次,O(n)
for(j=1;j<=n;j++) // 又重复n次, O(n)
{
c[i][j]=0; // 工作量 1
for(k=1;k<=n;++k) // 重复n次,O(n)
c[i][j]+=a[i][k]*b[k][j]; // 工作量 1
} // 该括号部分语句工作量为 O(1+n*1)=O(n)
// 总的工作量(复杂度)为O(n * n * n)=O(n³),简单的说,并列语句时,工作量相加,涉及到语句的循环时,工作量乘循环次数,所以一般只要看循环多少层就可以了。这里的第三层语句中工作量实际上不都被忽略了吗?
for(i=1;i<=n;++i) // 重复n次,O(n)
for(j=1;j<=n;j++) // 又重复n次, O(n)
{
c[i][j]=0; // 工作量 1
for(k=1;k<=n;++k) // 重复n次,O(n)
c[i][j]+=a[i][k]*b[k][j]; // 工作量 1
} // 该括号部分语句工作量为 O(1+n*1)=O(n)
// 总的工作量(复杂度)为O(n * n * n)=O(n³),简单的说,并列语句时,工作量相加,涉及到语句的循环时,工作量乘循环次数,所以一般只要看循环多少层就可以了。这里的第三层语句中工作量实际上不都被忽略了吗?
全部回答
- 1楼网友:专属的偏见
- 2021-02-28 11:36
少了一层循环吧 , j 没有呀
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯