如何在网站后台删除栏目,类似非小号的网站怎么做,五路居网站建设,个人怎样建设网站一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道#xff0c;放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时#xff0c;活塞向左推动#xff0c;将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时#xff0c;机械手将抓取筐顶部的一件物品#x…一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时活塞向左推动将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时机械手将抓取筐顶部的一件物品放到流水线上。图 2 显示了顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态。 图1 自动包装机的结构 图 2 顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态
一种特殊情况是因为筐的容量是有限的当筐已经满了但仍然有某条轨道的按钮被按下时系统应强制启动 0 号键先从筐里抓出一件物品再将对应轨道的物品推落。此外如果轨道已经空了再按对应的按钮不会发生任何事同样的如果筐是空的按 0 号按钮也不会发生任何事。
现给定一系列按钮操作请你依次列出流水线上的物品。
输入格式
输入第一行给出 3 个正整数 N≤100、M≤1000和 Smax≤100分别为轨道的条数于是轨道从 1 到 N 编号、每条轨道初始放置的物品数量、以及筐的最大容量。随后 N 行每行给出 M 个英文大写字母表示每条轨道的初始物品摆放。
最后一行给出一系列数字顺序对应被按下的按钮编号直到 −1 标志输入结束这个数字不要处理。数字间以空格分隔。题目保证至少会取出一件物品放在流水线上。
输出格式
在一行中顺序输出流水线上的物品不得有任何空格。
输入样例
3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1输出样例
MATA
//此题就是关于栈框和队列轨道的应用队列这里可以用vector数组处理但鉴于大家对于vector的了解程度我们更建议使用字符串数组或字符数组然后这里的栈也可以使用字符数组代替不过更推荐栈的使用。
//注意题目所说的特殊情况第一如果将轨道物品推入框之前发现框满要输出框顶元素然后再推入框中第二虽然题目说我们框中无物品并且按0或者轨道无物品再按对应轨道号时无影响但我们仍需判断否则段错误。
//这里犯了一个低级错误导致此前代码1号测试点的2分一直拿不到我此前的代码书写为 这种if-else的判断就存在很大问题。 //b数组就是当前输入x后对应的轨道所在的位置。
我后面一直在想为什么要在if(x0)这个操作之后去else进行操作如果不加这个else可不可以答案显而易见是不行的我们如果只单独判断x0这种属于特判在下面的操作中仍然会对0进行操作除非我们这个判断里加上continue也就是结束x0的相关操作后又再次进行下一个输入处理。
#includebits/stdc.h
using namespace std;
int main(){int n,m,k,x,b[1005];stackchars;char a[105][1005];cinnmk;for(int i1;in;i)b[i]1;for(int i1;in;i){for(int j1;jm;j)cina[i][j];}while(cinxx!-1){if(x0){if(!s.empty()){couts.top();s.pop();}}else{if(b[x]m){if(s.size()k){couts.top();s.pop();}s.push(a[x][b[x]]);b[x];}}}return 0;
} //下面是我最开始只得一分的代码
#includebits/stdc.h
using namespace std;
int main(){int n,m,k,x;stackchars;char a[105][1005],b;cinnmk;for(int i1;in;i){for(int j1;jm;j)cina[i][j];}while(cinx){if(x-1)break;if(x0){bs.top();coutb;s.pop();}for(int j1;jm;j){if(a[x][j]!0){if(s.size()k){bs.top();coutb;s.pop();s.push(a[x][j]);a[x][j]0;}s.push(a[x][j]);a[x][j]0;break;}}}return 0;
}
//经过修改和优化后的正确代码 //这里我的循环就同样取代b数组带来的效益
#includebits/stdc.h
using namespace std;
int main(){int n,m,k,x;stackchars;char a[105][1005];cinnmk;for(int i1;in;i){for(int j1;jm;j)cina[i][j];}while(cinx){if(x-1)break;if(x0){ if(!s.empty()){couts.top();s.pop();}}else{ for(int j1;jm;j){if(a[x][j]!0){if(s.size()k){couts.top();s.pop();}s.push(a[x][j]);a[x][j]0;break;}}}}return 0;
}