#include<stdio.h> #include <iostream> #include <algorithm> using namespace std; int n , m ,best=1000000; int len[99]; int t[99]={29,7,20,19,19,22,8}; int comp(){ int x= 0; for(int i=0; i<m ; i++) if(len[i]>x) x=len[i]; return x ; } void search(int dep,int *len,int *t){ if(dep==n) { int x=comp(); if(x<best) best=x; return; } for(int i=0; i<m ; i++) { len[i]+=t[dep]; if(len[i]<best) search(dep+1,len,t); len[i]-=t[dep]; } } int main(){ int i; cin>>n>>m ; for (i=0; i<m ; i++) len[i]=0; search(0,len,t); cout<<"处理所有作业所需最短时间:"<<best<<endl; return 0; }这段代码中的x表示什么意思
时间: 2024-03-14 20:49:56 浏览: 13
在这段代码中,x表示当前所有机器的最长加工时间。在comp()函数中,遍历所有机器的加工时间,返回最长的加工时间。在search()函数中,每次将第dep个任务分配给一个机器,更新该机器的加工时间,然后递归调用search()函数,直到所有任务都被分配完毕。然后计算当前所有机器的最长加工时间x,如果x小于当前最优解best,则更新best的值。最后输出处理所有作业所需最短时间best的值。
相关问题
逐句讲解以下代码#include<stdio.h> #include <iostream> #include <algorithm> using namespace std; int n , m ,best=1000000; int len[99]; int t[99]={29,7,20,19,19,22,8}; int comp(){ int x= 0; for(int i=0; i<m ; i++) if(len[i]>x) x=len[i]; return x ; } void search(int dep,int *len,int *t){ if(dep==n) { int x=comp(); if(x<best) best=x; return; } for(int i=0; i<m ; i++) { len[i]+=t[dep]; if(len[i]<best) search(dep+1,len,t); len[i]-=t[dep]; } } int main(){ int i; cin>>n>>m ; for (i=0; i<m ; i++) len[i]=0; search(0,len,t); cout<<"处理所有作业所需最短时间:"<<best<<endl; return 0; }
1. `#include<stdio.h>`:引入标准输入输出库头文件。
2. `#include <iostream>`:引入C++标准输入输出流库头文件。
3. `#include <algorithm>`:引入C++算法库头文件。
4. `using namespace std;`:使用标准命名空间。
5. `int n, m, best = 1000000;`:定义整型变量 n,m 和 best,初始值为 1000000。
6. `int len[99];`:定义长度为 99 的整型数组 len。
7. `int t[99] = {29, 7, 20, 19, 19, 22, 8};`:定义长度为 99 的整型数组 t,并给数组赋初值。
8. `int comp()`:定义了一个名为 comp 的函数,返回值为整型。
9. `int x = 0;`:定义整型变量 x,初始值为 0。
10. `for(int i=0; i<m ; i++)`:循环语句,变量 i 的初始值为 0,每次循环后 i 自增 1,循环条件为 i 小于 m。
11. `if(len[i]>x)`:判断语句,如果 len[i] 大于 x,则执行下面的语句。
12. `x = len[i];`:将 len[i] 的值赋给 x。
13. `return x;`:返回变量 x 的值。
14. `void search(int dep, int *len, int *t)`:定义了一个名为 search 的 void 函数,接收三个参数:dep,len 和 t。
15. `if(dep==n)`:判断语句,如果 dep 等于 n,则执行下面的语句。
16. `int x = comp();`:定义整型变量 x,将 comp 函数的返回值赋给它。
17. `if(x<best)`:判断语句,如果 x 小于 best,则执行下面的语句。
18. `best = x;`:将 x 的值赋给 best。
19. `return;`:结束函数的执行。
20. `for(int i=0; i<m ; i++)`:循环语句,变量 i 的初始值为 0,每次循环后 i 自增 1,循环条件为 i 小于 m。
21. `len[i] += t[dep];`:将 len[i] 和 t[dep] 相加,将结果赋给 len[i]。
22. `if(len[i] < best)`:判断语句,如果 len[i] 小于 best,则执行下面的语句。
23. `search(dep+1, len, t);`:递归调用 search 函数,将 dep+1、len 和 t 作为参数传递给它。
24. `len[i] -= t[dep];`:将 len[i] 减去 t[dep],将结果赋给 len[i]。
25. `int main()`:定义了一个名为 main 的函数,返回值为整型。
26. `int i;`:定义整型变量 i。
27. `cin >> n >> m;`:从标准输入流中读取两个整型数值,分别赋给 n 和 m。
28. `for(i=0; i<m ; i++) len[i]=0;`:循环语句,变量 i 的初始值为 0,每次循环后 i 自增 1,循环条件为 i 小于 m,将 len 数组中的每个元素都赋值为 0。
29. `search(0, len, t);`:调用 search 函数,将 0、len 和 t 作为参数传递给它。
30. `cout << "处理所有作业所需最短时间:" << best << endl;`:将字符串和变量 best 打印到标准输出流中,在结尾处加上换行符。
31. `return 0;`:结束程序的执行,返回 0。
#include<stdio.h> #include <iostream> #include <algorithm> using namespace std; int n , m ,best=1000000; int len[99]; int t[99]={29,7,20,19,19,22,8}; int comp(){ int x= 0; for(int i=0; i<m ; i++) if(len[i]>x) x=len[i]; return x; } void search(int dep,int *len,int *t){ if(dep==n) { int x=comp(); if(x<best) best=x; return; } for(int i=0; i<m ; i++) { len[i]+=t[dep]; if(len[i]<best) search(dep+1,len,t); len[i]-=t[dep]; } } int main(){ int i; cin>>n>>m ; for (i=0; i<m ; i++) len[i]=0; search(0,len,t); cout<<"处理所有作业所需最短时间:"<<best<<endl; return 0; }
这是一个使用回溯法解决作业调度问题的程序。该程序将 n 个作业分配给 m 台机器完成,每个作业需要的时间由 t 数组给出。程序通过枚举所有可能的作业分配方式,找到完成所有作业所需的最短时间。
具体实现中,程序定义了一个 comp 函数用于计算当前作业分配方案中完成时间最长的机器所需的时间,然后使用 search 函数进行回溯搜索。search 函数的参数包括当前搜索深度 dep、每台机器完成作业所需的时间 len、以及每个作业所需的时间 t。在每一层搜索中,程序枚举将当前作业分配给哪一台机器,然后更新 len 数组,并根据当前最优解 best 的值进行剪枝。
最后输出 best 即为完成所有作业所需的最短时间。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![image/gif](https://img-home.csdnimg.cn/images/20210720083352.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)