#include<cstdio>
#include<iostream>
#include<queue>
#include<list>
using namespace std;
struct node{
int r,l,date;
}; //链表
node a[1000000];
int i=1;
main()
{a[1].l=0;
a[1].r=0;
a[0].l=1;
a[0].r=1; //初始化
int n;
cin>>n;
for(int i=2;i<=n;i++){
a[i].l=i-1;
a[i-1].r=i;
}
a[0].l=n;
a[n].r=0;
for(int i=1;i<=n;i++){
cin>>a[i].date;
}
int head=a[0].r,tail=a[0].r;
while(a[0].l!=0){
while(a[head].date==a[tail].date&&a[head].r!=0){
head=a[head].r;
}
cout<<tail<<" ";
a[a[tail].l].r=a[tail].r;
a[a[tail].r].l=a[tail].l; //删除
tail=head;
if(a[head].r==0)//判断结尾
{
cout<<endl;
i++;
head=a[0].r,tail=a[0].r;
};
}
return 0;
}
当最后一个数据例如
12
1 1 0 0 1 1 1 0 1 1 0 0
会出现 1 0
11 12
的情况
运行时会跳过12号,原因为会先执行if(a[head].r==0) 暂无法解决,求帮助!!