欢迎来到天天文库
浏览记录
ID:52016848
大小:26.00 KB
页数:3页
时间:2020-03-21
《无论如何调度,我们的操作都是入栈和出栈,设定入栈为1.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、无论如何调度,我们的操作都是入栈和出栈,设定入栈为1,出栈为0,对n列车 厢有2n次这样的操作,例如n=4,则有操作11110000、10101010等,于是我们有 理由构造一个操作命令队列b[],注意这个队列中有三个要求: 1.其中1和0的数目要相等,代表入栈和出栈操作完整 2.从左往右1的数目一定不能小于0的数目,否则没有栈中元素可以弹 3.数列第一个元素一定为1,最后一个一定为0,数列从10101010开始, 到11110000结束,但是我这里为了方便从10000000开始到11110000 在
2、我的程序中,也是为了方便(我很懒吧),只考虑中间6位,开头 和结尾的数据没有必要考虑 于是按照这样的操作,我们形成了车厢的任意组合的输出情况 #include #include class Stack { private: int a[100]; int i; public: Stack():i(0) { }; void push(int d) { a[i]=d; i++; if (i>=100) { cerr<<"There is n
3、o space"<0) { i--; return a[i]; } else { return -1; } }; }; #include"Stack.h" #define tracknumber #define max tracknumber*2 int b[max]; bool check() { Stack s; int l=0; for(int a=0;a4、 (b[a]==1) {l++;} if (l!=tracknumber) {return false;} for(a=0;a5、} else {cout<6、=2) {b[i]=0;cf=1;} while(cf==1 && i>0) { i--; b[i]++; cf=0; if (b[i]==2) {b[i]=0;cf=1;} } if (check()==true) { out();} i=max-2; } }; void main() { b[0]=1; b[7]=0; give(); }
4、 (b[a]==1) {l++;} if (l!=tracknumber) {return false;} for(a=0;a5、} else {cout<6、=2) {b[i]=0;cf=1;} while(cf==1 && i>0) { i--; b[i]++; cf=0; if (b[i]==2) {b[i]=0;cf=1;} } if (check()==true) { out();} i=max-2; } }; void main() { b[0]=1; b[7]=0; give(); }
5、} else {cout<6、=2) {b[i]=0;cf=1;} while(cf==1 && i>0) { i--; b[i]++; cf=0; if (b[i]==2) {b[i]=0;cf=1;} } if (check()==true) { out();} i=max-2; } }; void main() { b[0]=1; b[7]=0; give(); }
6、=2) {b[i]=0;cf=1;} while(cf==1 && i>0) { i--; b[i]++; cf=0; if (b[i]==2) {b[i]=0;cf=1;} } if (check()==true) { out();} i=max-2; } }; void main() { b[0]=1; b[7]=0; give(); }
此文档下载收益归作者所有