哪位大佬帮我看看这是什么问题,球球了(只有注释的地方不一样)
100分代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
bool p;
int a[maxn],b[maxn],b1[maxn],b2[maxn];
int main()
{
int n,m,now;//先定义了now
scanf("%d %d",&n,&m);
for (int i=1;i<=n;i++)
a[i]=i;
for (int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
if (b[i]==3)
scanf("%d %d",&b1[i],&b2[i]);
}
for (int i=m;i;i--)
{
if (b[i]==1||b[i]==2)
{
now=i;
break;
}
}
if (b[now]==2)p=1;
else p=0;
for (int i=now+1;i<=m;i++)
{
if (b[i]==3)
{
if (p==0)
swap(a[b1[i]],a[b2[i]]);
else
swap(a[n-b1[i]+1],a[n-b2[i]+1]);
}
else
p=1-p;
}
if (p==0)for (int i=1;i<=n;i++)printf("%d ",a[i]);
else for (int i=n;i>=1;i--)printf("%d ",a[i]);
return 0;
}
87分代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
bool p;
int a[maxn],b[maxn],b1[maxn],b2[maxn];
int main()
{
int n,m;
scanf("%d %d",&n,&m);
for (int i=1;i<=n;i++)
a[i]=i;
for (int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
if (b[i]==3)
scanf("%d %d",&b1[i],&b2[i]);
}
int now;
for (int i=m;i;i--)
{
if (b[i]==1||b[i]==2)
{
now=i;
break;
}
}
if (b[now]==2)p=1;
else p=0;
for (int i=now+1;i<=m;i++)
{
if (b[i]==3)
{
if (p==0)
swap(a[b1[i]],a[b2[i]]);
else
swap(a[n-b1[i]+1],a[n-b2[i]+1]);
}
else
p=1-p;
}
if (p==0)for (int i=1;i<=n;i++)printf("%d ",a[i]);
else for (int i=n;i>=1;i--)printf("%d ",a[i]);
return 0;
}
跪求大佬解答这个为啥会这样 orz orz orz