两条斜线(穷举)

一、题目

两条斜线 (nowcoder.com)

平面上有n个点,现在你需要建造两条路,一条是斜率为1,
另一条斜率为-1
你的任务是让这两条路经过尽可能多的点
求最多经过几个点

输入描述:

第一行输入一个整数N表示点的个数
第二行输入N个数表示X坐标
第三行输入N个数表示Y坐标
1<=N<=1000 ,0<=x[i],y[i]<=999

输出描述:

输出一个整数

两条斜线(穷举)_第1张图片

二、代码

#include
using namespace std;
int main()
{
	int num = 0;//点的个数
	cin >> num;
	int x[1000] = { 0 };
	int y[1000] = { 0 };
	int a[1000] = { 0 };//记录y-x
	int b[1000] = { 0 };//记录y+x
	for (int i = 0; i < num; i++)
	{
		cin >> x[i];//x坐标
	}
	for (int j = 0; j < num; j++)
	{
		cin >> y[j];//y坐标
	}

	int  max = 0;
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < num; j++)
		{
			a[i] = y[i] - x[i];
			b[j] = y[j] + x[j];
			int count = 0;
			for (int k = 0; k < num; k++)
			{
				if (y[k] - x[k] == a[i] || y[k] + x[k] == b[j])
					count++;
			}
			if (count >= max)
				max = count;
		}
		
	}

	cout << max;
	return 0;

}

你可能感兴趣的:(枚举和暴力,面试,职场和发展)