暴力枚举解两条斜线问题
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暴力枚举解两条斜线问题相关的知识,希望对你有一定的参考价值。
平面上有n个点,现在你需要建造两条路,一条是斜率为1,
另一条斜率为-1
你的任务是让这两条路经过尽可能多的点
求最多经过几个点
题目:斜率为±1的两条直线最多经过几个点,并输出。
解题思路:
- 那么我们可以有方程斜率为1的直线为y=x+b1
- 斜率为-1的直线为y=-x+b2
- 可以得出b1=y-x,b2=y+x
- 如果b1或b2相同,则点在这两条直线上
- 因此问题变成了最多有几个点的b1或b2相同
- 那么枚举b1b2即可
#include <stdio.h>
#include <stdlib.h>
int main() {
int N=0;
int x[1000]={0};
int y[1000]={0};
int i,j,k,max=0;
scanf("%d",&N);
for(i=0;i<N;i++){
scanf("%d",&x[i]);
}
for(j=0;j<N;j++){
scanf("%d",&y[j]);
}
for(i=0;i<N;i++){
int b1 = y[i]-x[i];
for(j=0;j<N;j++){
int b2 = y[j]+x[j];
int count=0;
for(k=0;k<N;k++){
if(b1 == y[k]-x[k] || b2 == y[k]+x[k]){
count++;
}
}
if(max<count){
max = count;
}
}
}
printf("%d",max);
return 0;
}
以上是关于暴力枚举解两条斜线问题的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥系列212道「暴力枚举」真题,夯实你的刷题基本功(暴力枚举模板)