飞机

#include <stdio.h>
int a[12][5];
int b[12][5];
int ay[3]={0,1,-1};
int N,max=0;
void zha(int x)
{
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<5;j++)
		{
			b[i][j]=a[i][j];
		}
	}

	for(int i=x-4;i<=x;i++)
	{
		for(int j=0;j<5;j++)
		{
			if(b[i][j]==2)
				b[i][j]=0;
		}
	}
}

void fun(int step , int y , int sum)
{
	
	if(step==-1)
	{
		if(sum>max)
		{
			max=sum;
		}
		return ;
	}
	for(int i=0;i<3;i++)
	{
		int k;
		if(y>=0&&y<5)
		{
		    k=y+ay[i];
			if(b[step][k]==2)
			{
				sum=sum-1;
			}
			else
			{
				sum+=b[step][k];
			}
			fun(step-1,k,sum);
			if(b[step][k]==2)
			{
				sum=sum+1;
			}
			else
			{
				sum-=b[step][k];
			}
		}
	}
}
void main()
{
	freopen("in.txt","r",stdin);
	scanf("%d",&N);
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<5;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=N-1;(i-4)>=0;i--)
	{
		zha(i);
		fun(N-1,2,0);
	}
	printf("%d",max);
}
原文地址:https://www.cnblogs.com/452035305qq/p/6237474.html