哪位大佬帮忙看看我这哪里错了
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/10/29 21:25
  • 上次更新2023/11/4 01:58:48
查看原帖
哪位大佬帮忙看看我这哪里错了
363096
封禁用户楼主2021/10/29 21:25

这是题目

#include<bits/stdc++.h>
using namespace std;
struct ftuit
{
	int id,kind;
}a[200001],c[200001];
int main()
{
	bool l=1;
	int n,num,b[200001],m=0;
	int j=1;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i].kind ;
		a[i].id =i+1;
	}
	for(int i=0;i<n;i++)//备份 
	{
		c[i].id =a[i].id ;
		c[i].kind =a[i].kind ;
	}
	while(l==1)
	{
		num=0;
    	for(int i=0;i<n;i++)//挑选水果 
		{
			if(a[i].kind ==a[i+1].kind)
    	    {
    	        if(i==0)//第一个数肯定要输出 
			    {
			    	cout<<a[i].id <<" ";
			    	b[num]=i;//记录编号 
    	            num++;//次数加一 
    	            a[i].id =NULL;
				}
    			if(i!=0&&a[i].kind!=a[i-1].kind)//不是第一个水果并且种类与前一个不同 
				{
                	cout<<a[i].id<<" ";
			    	b[num]=i;
    	            num++;
    	            a[i].id =NULL;
            	}
        	}
        	if(a[i].kind!=a[i-1].kind&&a[i].kind!=a[i+1].kind)//与前后两个水果的种类都不一样 
        	{
        	    cout<<a[i].id<<" ";
			    b[num]=i;
    	        num++;
    	        a[i].id =NULL;
        	}
		}
		cout<<endl;
		for(int i=0;i<n;i++)//清除已经被挑走的水果 
		{
			if(a[i].id ==NULL)//如果编号为NULL,即该水果已被挑走,就去除 
			{
				for(;a[i+j].id ==NULL;j++)//寻找,如果a[i+j]水果也被挑走则跳过 
				{
				}
				a[i].id =a[i+j].id ;
				a[i].kind =a[i+j].kind ;
				a[i+j].kind =NULL;
				a[i+j].kind =NULL;
			}
		}
		n-=num;
		if(n==0)
		{
			l=0;
		}
	}
	return 0;
}
2021/10/29 21:25
加载中...