站外题求助
  • 板块灌水区
  • 楼主US_FBI
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/9/23 21:08
  • 上次更新2024/9/23 23:13:52
查看原帖
站外题求助
1305172
US_FBI楼主2024/9/23 21:08

题目描述

计算鸭在上电脑课的时候,写了一个游戏。

游戏的内容是:在一个 n×n 的矩阵里,有若干个敌人。你可以选择一个 没有敌人 的位置放置激光炮,激光炮会朝东南西北四个方向发射激光,具有穿透性能消灭射线上的所有敌人。

现在计算鸭想考考你,把激光炮放置在哪个位置上消灭的敌人数量最多。
#include <iostream>
#include <cstring>
using namespace std;

int a[1010][1010];
int n;
int main()
{
	int max=-1;
	memset(a,-1,sizeof(a));
	cin >> n;
	for(int i=1;i<=n;i++)//hang
	{
		for (int j=1;j<=n;j++)//lie
		{
			cin >> a[i][j];
		}
	}
	for (int i=1;i<=n;i++)
	{
		int sum=0;
		
		for (int j=1;j<=n;j++)
		{
			if(!a[i][j])
			{
				for (int k=1; ;k++)
				{
					if(a[i][j-k]!=-1)
					{
						sum+=a[i][j-k];
					}
					else break;
				}
				for (int k=1; ;k++)
				{
					if(a[i][j+k]!=-1)
					{
						sum+=a[i][j+k];
					}
					else break;
				}
				for (int k=1; ;k++)
				{
					if(a[i+k][j]!=-1)
					{
						sum+=a[i+k][j];
					}
					else break;
				}
				for (int k=1; ;k++)
				{
					if(a[i-k][j]!=-1)
					{
						sum+=a[i-k][j];
					}
					else break;
				}
			}
			else continue;
			if(sum>max)max=sum;
		}
	}
	cout << max;
	return 0;
}
2024/9/23 21:08
加载中...