求助,不知为什么WA了
查看原帖
求助,不知为什么WA了
397809
yangyi2120楼主2021/3/14 09:43

我的代码能通过样例、我自已编的输入和uDebug网站上的输入,但提交了就WA,我找了很久都没找到原因。

#include <iostream>
#include <cstdio>
#include <memory.h>
#include <algorithm>
using namespace std;
int flapjack[35],temp[35],pos[105],n;
bool isend=false;
void read()
{
	char c;
	int i=1,t;
	scanf("%d",flapjack+i);
	pos[flapjack[i]]=i;
	temp[i]=flapjack[i];
	i++;
	while((c=getchar())!='\n'&&c!=EOF)
	{
		scanf("%d",flapjack+i);
		pos[flapjack[i]]=i;
		temp[i]=flapjack[i];
		i++;
	}
	n=i-1;
//	for(int j=1;j<i;j++)
//	{
//		printf("%d ",flapjack[j]);
//	}
	if(c==EOF)
	{
		printf("aaa");
		isend=true;
	}
		
}
void solve(int x,int n,bool flag)//一共n张饼,最下面x张已排好 ,flag没用,但我懒得盖 
{
	if(x==n)//已排好了 
	{
		printf("0\n");
		return;
	}
	
	int max=temp[n-x+1];//因为最先读入的是最上面的饼,所以要用n-x+1反一下 
	if(flapjack[n-x+1]!=max)
	{
		if(pos[max]!=1)//若不在最上面,则先把它翻上来 
		{
			printf("%d ",n-pos[max]+1);
			for(int i=pos[max],j=1;i>=j;i--,j++)
			{
				swap(pos[flapjack[i]],pos[flapjack[j]]);
				swap(flapjack[i],flapjack[j]);
			}
		}
		
		printf("%d ",x);
		for(int i=n-x+1,j=1;i>=j;i--,j++)
		{
			swap(pos[flapjack[i]],pos[flapjack[j]]);
			swap(flapjack[i],flapjack[j]);
		}
		
	}
	
	solve(x+1,n,flag);
}
int main()
{
	while(!isend)
	{
		read();
		sort(temp+1,temp+n+1);
//		reverse(flapjack+1,flapjack+n+1);
//		for(int j=1;j<=n;j++)
//			printf("%d ",temp[j]);
		solve(1,n,false);
	}
	//read();
	return 0; 
} 
2021/3/14 09:43
加载中...