-
直线的平移 y = x + b 或者 y = -x + b ,这里 b 的范围不好确定,
所以 所以 应该用 try2 而不是 try1。 -
try 2
sum 记录每种情况的做大值 。
max 记录平移(所有情况)最大值。
#include<stdio.h>
int x[1001],y[1001],i,j,m,n,b1,b2,sum,max=0;
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&x[i]);
for(i=0;i<n;i++)scanf("%d",&y[i]);
for(i=0;i<n;i++)
{
b1=y[i]-x[i];
for(j=0;j<n;j++)
{
b2=x[j]+y[j];
for(sum=0,m=0;m<n;m++)
{
if(y[m]-x[m]==b1||y[m]+x[m]==b2)sum++;
}
if(sum>max)max=sum;
}
}
printf("%d",max);
return 0;
}
- try 1
#include<iostream>
using namespace std;
int main()
{
int n; cin >> n;
int x[n]; int y[n];
int count = 0;
for(int i=0; i<n; i++) cin >> x[i];
for(int j=0; j<n; j++) cin >> y[j];
for(int k=0; k<n; k++)
{
for(int b=0; b<10; b++)
{
if(y[k] == x[k] + b && y[k] != -1* x[k] + b) count += 1;
}
}
for(int k=0; k<n; k++)
{
for(int b=0; b<10; b++)
{
if(y[k] == -1 * x[k] + b && y[k] != x[k] + b) count += 1;
}
}
cout << count << endl;
return 0;
}