【2012.03.3普及组】寻找星座

题目描述

 现在你在一张卫星图片中寻找星座,已知该星座在图片中正好出现一次,而且形状一样,方向一样,大小也一样。注意图片中可能有一些与该星座无关的星星。

例如图1中的星座出现在图2的卫星图片中(用圆圈标识部分)。图1中给定的星座需要在X轴上平移2个单位同时在y轴上平移-3个单位才能与卫星图片中的卫星正好吻合。

写一个程序,计算给定卫星需要在X和Y方向上分别平移多少单位才能与卫星图片吻合。

题解

  纯暴力,枚举每一个点的横纵坐标,那个点全部符合就输出。

代码

var
  n,m,s:longint;
  x,y:array[0..1000] of longint;
  a,b:array[0..1000,1..2] of longint;
procedure init;
var
  i:longint;
begin
  readln(n);
  for i:=1 to n do readln(a[i,1],a[i,2]);
  readln(m);
  for i:=1 to m do
    begin
      readln(b[i,1],b[i,2]);
      x[i]:=b[i,1]-a[1,1];
      y[i]:=b[i,2]-a[1,2];
    end;
end;
procedure main;
var
  i,j,l:longint;
begin
  for i:=1 to m do
    begin
      s:=0;
      for j:=1 to n do
        for l:=1 to m do
          if (b[l,1]=a[j,1]+x[i])and(b[l,2]=a[j,2]+y[i]) then
            begin
              inc(s);
              break;
            end;
      if s=n then
        begin
          writeln(x[i],' ',y[i]);
          exit;
        end;
    end;
end;
begin
  init;
  main;
end.


你可能感兴趣的:(2016暑假中山)