求助自制题U290282
  • 板块学术版
  • 楼主mazxszd
  • 当前回复16
  • 已保存回复16
  • 发布时间2023/7/3 14:02
  • 上次更新2023/11/3 11:47:09
查看原帖
求助自制题U290282
719689
mazxszd楼主2023/7/3 14:02

U290282

作者至今只有半成品代码,求完整代码,

悬赏一关注。

附半成品代码,可修改:

#include<bits/stdc++.h>
using namespace std;
int n;
struct Node{int num,x,y,ok;}s[5010][5010];
int ans=-1;
//ok 1 可以炸 
//ok 2 不能炸 
//ok 3 军火库爆炸 
void panduan(int abc,int i,int j)
{
	if(abc==0)
	{
		s[i][j].num=0;
		s[i][j].ok=1;
	}
	if(abc==1)
		s[i][j].ok=3;	
	if(abc==2)
	{
		s[i][j].num=2;
		s[i][j].ok=1;			
	}
	if(abc==3)
	{
		s[i][j].num=5;
		s[i][j].ok=1;
	}
	if(abc==4)
	{
		s[i][j].num=10;
		s[i][j].ok=1;
	}
	if(abc==5)
	{
		s[i][j].num=-5;
		s[i][j].ok=1;
	}
	if(abc==6)
	{
		s[i][j].num=15;
		s[i][j].ok=2;
	}
}
void boom(int i,int j)//ok 3 执行 
{
	ans+=s[i-1][j-1].num+s[i-1][j].num+s[i-1][j+1].num+s[i][j-1].num+s[i][j].num+s[i][j+1].num+s[i+1][j-1].num+s[i+1][j].num+s[i+1][j+1].num;
	s[i-1][j-1].num=0;
	s[i-1][j].num=0;
	s[i-1][j+1].num=0;
	s[i][j-1].num=0;
	s[i][j].num=0;
	s[i][j+1].num=0;
	s[i+1][j-1].num=0;
	s[i+1][j].num=0;
	s[i+1][j+1].num=0;
	if(s[i-1][j-1].ok==3) 
		boom(i-1,j-1);
	if(s[i-1][j].ok==3) 
		boom(i-1,j);
	if(s[i-1][j+1].ok==3) 
		boom(i-1,j+1);
	if(s[i][j-1].ok==3) 
		boom(i,j-1);
	if(s[i][j+1].ok==3) 
		boom(i,j+1);
	if(s[i+1][j-1].ok==3) 
		boom(i+1,j-1);
	if(s[i+1][j].ok==3) 
		boom(i+1,j);
	if(s[i+1][j+1].ok==3) 
		boom(i+1,j+1);	
}
int main() 
{
	cin>>n;
	int abc;
	for(int i=1;i<=n;i++) 
	{
		for(int j=1;j<=n;++j)
		{
			cin>>abc;
			panduan(abc,i,j); 
			s[i][j].x=i;
			s[i][j].y=j;
		}
	}
	int x,y;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			if(ans<s[i-1][j-1].num+s[i-1][j].num+s[i-1][j+1].num+s[i][j-1].num+s[i][j].num+s[i][j+1].num+s[i+1][j-1].num+s[i+1][j].num+s[i+1][j+1].num&&s[i][j].ok!=2)
			{
				ans=s[i-1][j-1].num+s[i-1][j].num+s[i-1][j+1].num+s[i][j-1].num+s[i][j].num+s[i][j+1].num+s[i+1][j-1].num+s[i+1][j].num+s[i+1][j+1].num;
				s[i-1][j-1].num=0;
				s[i-1][j].num=0;
				s[i-1][j+1].num=0;
				s[i][j-1].num=0;
				s[i][j].num=0;
				s[i][j+1].num=0;
				s[i+1][j-1].num=0;
				s[i+1][j].num=0;
				s[i+1][j+1].num=0;
				x=i;y=j;
				if(s[i-1][j-1].ok==3) 
					boom(i-1,j-1);
				if(s[i-1][j].ok==3) 
					boom(i-1,j);
				if(s[i-1][j+1].ok==3) 
					boom(i-1,j+1);
				if(s[i][j-1].ok==3) 
					boom(i,j-1);
				if(s[i][j+1].ok==3) 
					boom(i,j+1);
				if(s[i+1][j-1].ok==3) 
					boom(i+1,j-1);
				if(s[i+1][j].ok==3) 
					boom(i+1,j);
				if(s[i+1][j+1].ok==3) 
					boom(i+1,j+1);
			}	
		}	
	}
	cout<<"("<<x<<","<<y<<")"<<endl;
	cout<<ans;
	return 0;
}
2023/7/3 14:02
加载中...