求C++高手,帮我解读一个关于车厢调度的程序,谢谢

wujing198198 2012-05-16 02:53:55
求C++高手,帮我解读一个关于车厢调度的程序,谢谢
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
w346581442 2012-05-16
  • 打赏
  • 举报
回复
0&&z//一直为假
wujing198198 2012-05-16
  • 打赏
  • 举报
回复
我是想接着给问题的呢,请教下下面这段程序的思想是什么
void operation(stack *s)
{
int a[60],i,j,k,m,n,l,z,y,flag1=1,flag2=1;
char ch;
cout<<"请输入车厢数(2-30)\n";
while(flag1)/*此循环是输入一个正确的车厢数假如在此输入的是4*/
{
cin>>i;
if(2>i&&i>30)
cout<<"输入错误请重新输入\n";
else
flag1=0;
}
flag1=1;
for(j=0;j<i*2;j++)/*对数组初始化为10101010,即首组输出的数据为1234*/
{
a[j++]=1;
a[j]=0;
}
while(flag1)/*总循环,输出所有满足条件的车厢调度*/
{
l=1,k=0;
for(j=0;j<i*2;j++)/*输出车厢调度*/
{
if(a[j]==1)
push(s,l++);
else if(a[j]==0)
pop(s);
}
cout<<"\n";
for(j=0;j<i;j++)/*判断是否已经满足结束条件,结束条件为11110000*/
if(a[j]==1)
k++;
if(k==i)
flag1=0;
a[i*2-1]++;/*尾数自加1*/
while(flag2&&flag1)
{
z=1,m=0,n=0,y=1;
for(j=i*2-1;j>=0&&z;j--)/*假如自加之后是2的话,前一位自加1,本位为0*/
if(a[j]!=2)
z=0;
else
{
a[j]=0;
a[j-1]++;
}
for(j=0;j<i*2&&y;j++)/*检验新的组合是否满足需求*/
{
if(a[j]==1)
m++;
else if(a[j]==0)
n++;
else
cout<<"错误\n";
if(n>m)
y=0;/*判断输出的时候栈是否为空,比如11000110*/
}
if(m==i&&n==i&&a[0]==1&&a[i*2-1]==0&&y==1)
flag2=0;
else
a[i*2-1]++;
}
flag2=1;
}[Quote=引用 4 楼 的回复:]
楼主发帖请人解难,可是就不说什么问题。黑色幽默了吧
[/Quote]
wujing198198 2012-05-16
  • 打赏
  • 举报
回复
void operation(stack *s)
{
int a[60],i,j,k,m,n,l,z,y,flag1=1,flag2=1;
char ch;
cout<<"请输入车厢数(2-30)\n";
while(flag1)/*此循环是输入一个正确的车厢数假如在此输入的是4*/
{
cin>>i;
if(2>i&&i>30)
cout<<"输入错误请重新输入\n";
else
flag1=0;
}
flag1=1;
for(j=0;j<i*2;j++)/*对数组初始化为10101010,即首组输出的数据为1234*/
{
a[j++]=1;
a[j]=0;
}
while(flag1)/*总循环,输出所有满足条件的车厢调度*/
{
l=1,k=0;
for(j=0;j<i*2;j++)/*输出车厢调度*/
{
if(a[j]==1)
push(s,l++);
else if(a[j]==0)
pop(s);
}
cout<<"\n";
for(j=0;j<i;j++)/*判断是否已经满足结束条件,结束条件为11110000*/
if(a[j]==1)
k++;
if(k==i)
flag1=0;
a[i*2-1]++;/*尾数自加1*/
while(flag2&&flag1)
{
z=1,m=0,n=0,y=1;
for(j=i*2-1;j>=0&&z;j--)/*假如自加之后是2的话,前一位自加1,本位为0*/
if(a[j]!=2)
z=0;
else
{
a[j]=0;
a[j-1]++;
}
for(j=0;j<i*2&&y;j++)/*检验新的组合是否满足需求*/
{
if(a[j]==1)
m++;
else if(a[j]==0)
n++;
else
cout<<"错误\n";
if(n>m)
y=0;/*判断输出的时候栈是否为空,比如11000110*/
}
if(m==i&&n==i&&a[0]==1&&a[i*2-1]==0&&y==1)
flag2=0;
else
a[i*2-1]++;
}
flag2=1;
}

这段程序的思想是什么
[Quote=引用 2 楼 的回复:]
解读是个什么意思 你把关键算法贴出来
[/Quote]
W170532934 2012-05-16
  • 打赏
  • 举报
回复
楼主发帖请人解难,可是就不说什么问题。黑色幽默了吧
wujing198198 2012-05-16
  • 打赏
  • 举报
回复
void operation(stack *s)
{
int a[60],i,j,k,m,n,l,z,y,flag1=1,flag2=1;
char ch;
cout<<"请输入车厢数(2-30)\n";
while(flag1)/*此循环是输入一个正确的车厢数假如在此输入的是4*/
{
cin>>i;
if(2>i&&i>30)
cout<<"输入错误请重新输入\n";
else
flag1=0;
}
flag1=1;
for(j=0;j<i*2;j++)/*对数组初始化为10101010,即首组输出的数据为1234*/
{
a[j++]=1;
a[j]=0;
}
while(flag1)/*总循环,输出所有满足条件的车厢调度*/
{
l=1,k=0;
for(j=0;j<i*2;j++)/*输出车厢调度*/
{
if(a[j]==1)
push(s,l++);
else if(a[j]==0)
pop(s);
}
cout<<"\n";
for(j=0;j<i;j++)/*判断是否已经满足结束条件,结束条件为11110000*/
if(a[j]==1)
k++;
if(k==i)
flag1=0;
a[i*2-1]++;/*尾数自加1*/
while(flag2&&flag1)
{
z=1,m=0,n=0,y=1;
for(j=i*2-1;j>=0&&z;j--)/*假如自加之后是2的话,前一位自加1,本位为0*/
if(a[j]!=2)
z=0;
else
{
a[j]=0;
a[j-1]++;
}
for(j=0;j<i*2&&y;j++)/*检验新的组合是否满足需求*/
{
if(a[j]==1)
m++;
else if(a[j]==0)
n++;
else
cout<<"错误\n";
if(n>m)
y=0;/*判断输出的时候栈是否为空,比如11000110*/
}
if(m==i&&n==i&&a[0]==1&&a[i*2-1]==0&&y==1)
flag2=0;
else
a[i*2-1]++;
}
flag2=1;
}
这段程序的思想是什么
  • 打赏
  • 举报
回复
解读是个什么意思 你把关键算法贴出来
wujing198198 2012-05-16
  • 打赏
  • 举报
回复
好心人请加扣扣1652775697

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧