首页 > 编程知识 正文

一般机械零件的加工顺序为,信息按加工顺序可分为

时间:2023-05-06 21:21:15 阅读:135405 作者:4451

实现最佳加工顺序回溯法代码/*第一台机器可以连续加工,第二台机器开工时间为第一台机器终了和第二台机器终了的最大值* */# include iostream # includealgorithmusing const int INF=0x3f3f3f3f; #define MAX 9999int n; //存储设备部件的个数int T1[MAX]; int T2[MAX]; int tempChoose[MAX]; int bestChoose[MAX]; int bestLast; //最佳结束时间int last1、last2; //当前,第一台计算机的结束时间和第二台计算机的结束时间voidbacktrack(int ); intmain(void ) { cout请输入机器部件的数量(n ); cinn; cout '请输入每个机器部件所需的第一台机器加工时间和第二台机器加工时间n '; for(intI=0; in; I ) { cinT1[i]; cinT2[i]; //初始化默认选择方式tempChoose[i]=i; } bestLast=INF; last1=last2=0; for(intI=0; in; I ) { bestChoose[i]=0; //用回溯法求解backtrack(0)的cout '最佳加工顺序n '; for(intI=0; in; I ) { coutbestChoose[i] '; } coutendl; cout '最佳机械零件加工时间为n '; coutbestLastendl; 返回0; //最佳加工顺序voidbacktrack(intt ) if (t=n ) )//更新最佳for ) intI=0; in; I ) { bestChoose[i]=tempChoose[i]; //更新最佳结束时间bestLast=last2; ()机器2不再加工物品时退出了返回; //返回上一个节点//枚举t之后的节点for(intI=t; in; I () /第一台机器加工另一个零件的last1=T1[tempChoose[i]]; 更新last1,用机器加工的话int temp=last2; last2=max(last1,last2) T2[tempChoose[i]]; //last2if(last2bestlast ) /此时,如果last2小于最佳时间,则具有代表性,也有可能超过最佳解swap(tempchoose[t]、tempChoose[i] )。 确定第//t个节点后退(t1 ); //t1swap搜索(tempChoose[i],tempChoose[i];//取消第t个节点} last1-=T1[tempChoose[i]];//取消第t个节点机器所需的时间last2=temp;//取消第t个节点机2所需的时间}样品pi @ raspberry pi :/media/pi/dist/algorithm /第五章回溯法/00004H_最佳加工顺序$./cospberry

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。