vector<int> sumTime(m,0);
时间: 2024-03-16 08:47:36 浏览: 229
这行代码定义了一个名为 `sumTime` 的 `vector` 对象,其中 `vector<int>` 表示这是一个存储整数类型的 `vector` 对象。`m` 是一个变量或者常量,表示这个 `vector` 对象的长度,即它可以存储的整数个数。`0` 是一个初始值,表示这个 `vector` 对象中的每一个元素都被初始化为0。在这个定义中,`sumTime` 初始化为一个长度为 `m` 的 `vector` 对象,其中的每一个元素都被初始化为0。如果需要给 `sumTime` 中的元素赋值,可以使用如下方式:
```cpp
sumTime[0] = 1; // 给第一个元素赋值为1
sumTime[1] = 2; // 给第二个元素赋值为2
// ...
```
这样,`sumTime` 中的每一个元素都表示一个时间总和,可以用于累加每一行中的时间。例如,如果需要将第一行中的时间总和加到 `sumTime[0]` 中,可以使用如下方式:
```cpp
sumTime[0] += machine[0][0]; // 累加第一行第一个元素的时间
sumTime[0] += machine[0][1]; // 累加第一行第二个元素的时间
// ...
```
这样,`sumTime[0]` 中的值就表示第一行中所有元素的时间总和。
相关问题
分析下面代码的时间复杂度和空间复杂度#include<bits/stdc++.h> using namespace std; int n,m; //作业个数为n, 机器个数为m int main() { cin>>n>>m; vector<int> time(n); vector<vector<int> > machine(m); vector<int> sumTime(m,0); for(int i=0;i<n;++i){ cin>>time[i]; } sort(time.begin(),time.end(),greater<int>()); for(int i=0;i<n;++i){ int select=0; for(int j=0;j<m;++j){ if(sumTime[j]<sumTime[select]){ select=j; } } machine[select].push_back(time[i]); sumTime[select]+=time[i]; } int maxTime=sumTime[0]; for(int j=0;j<m;++j){ if(sumTime[j]>maxTime){ maxTime=sumTime[j]; } } for(int j=0;j<m;++j){ cout<<"第"<<j<<"台机器所需处理总时间为: "<<sumTime[j]<<endl; } cout<<"处理所有作业时间共需: "<<maxTime; return 0; }
时间复杂度分析:
1. 输入操作的时间复杂度为 O(1)。
2. 创建一个长度为 n 的 vector,时间复杂度为 O(n)。
3. 创建一个大小为 m*m 的二维 vector,时间复杂度为 O(m^2)。
4. 创建一个长度为 m 的 vector,时间复杂度为 O(m)。
5. 对长度为 n 的 vector 进行排序,时间复杂度为 O(nlogn)。
6. 对长度为 n 的 vector 进行 n 次遍历,对长度为 m 的 vector 进行 m*n 次遍历,时间复杂度为 O(nm)。
7. 对长度为 m 的 vector 进行一次遍历,时间复杂度为 O(m)。
因此,该代码的时间复杂度为 O(nlogn + nm + m^2),其中 O(nlogn) 主要来自于排序操作。
空间复杂度分析:
1. 创建一个长度为 n 的 vector,空间复杂度为 O(n)。
2. 创建一个大小为 m*m 的二维 vector,空间复杂度为 O(m^2)。
3. 创建一个长度为 m 的 vector,空间复杂度为 O(m)。
因此,该代码的空间复杂度为 O(m^2 + n + m),其中 O(m^2) 主要来自于二维 vector 的创建。
#include<bits/stdc++.h> using namespace std; int n,m; int main() { srand(time(0)); cin>>n>>m; vector<int> time(n); vector<vector<int> > machine(m); vector<int> sumTime(m,0); for(int i=0;i<n;++i){ time[i]=rand()%30+1; cout<<time[i]<<setw(3); } sort(time.begin(),time.end(),greater<int>()); for(int i=0;i<n;++i){ int select=0; for(int j=0;j<m;++j){ if(sumTime[j]<sumTime[select]){ select=j; } } machine[select].push_back(time[i]); sumTime[select]+=time[i]; } int maxTime=sumTime[0]; for(int j=0;j<m;++j){ if(sumTime[j]>maxTime){ maxTime=sumTime[j]; } } for(int j=0;j<m;++j){ cout<<"第"<<j+1<<"台机器所需处理总时间为: "<<sumTime[j]<<endl; } cout<<"处理所有作业时间共需: "<<maxTime; return 0; }的时间复杂度
这段代码的时间复杂度为 $O(nm\log m)$,其中 $n$ 是作业的数量,$m$ 是机器的数量。
首先,生成随机数的时间复杂度为 $O(n)$,因为需要生成 $n$ 个随机数。然后,对随机数进行排序的时间复杂度为 $O(n\log n)$,因为使用的是 `sort` 函数,它的时间复杂度是 $O(n\log n)$。接着,对于每一个作业,需要在所有可用机器中选择一个空闲时间最短的机器进行调度,这个过程的时间复杂度为 $O(nm)$。在选择机器的过程中,需要遍历所有机器,因此时间复杂度为 $O(m)$。因此,总的时间复杂度为 $O(nm\log n)$。
需要注意的是,在实际情况中,机器数量 $m$ 通常比作业数量 $n$ 小得多,因此可以将时间复杂度近似看作 $O(n\log n)$。
阅读全文