首页 > 专题系列 > Java解POJ > POJ 1940 Polygon Programming with Ease [解题报告] Java
2013
11-10

POJ 1940 Polygon Programming with Ease [解题报告] Java

Polygon Programming with Ease

问题描述 :

Read the statement of Problem 1939! Given a list of meeting locations as specified in the description of Problem 1939, you have to calculate the locations of the Foreign Offices.

输入:

See the input specification of Problem 1939 for the format, and the output specification of Problem 1939 for the meaning of the input.

输出:

See the output specification of Problem 1939 for the format, and the input specification of Problem 1939 for the meaning of the output.

样例输入:

5 14 2 20 4 18 12 12 18 10 10
3 -3 5 -2 5 -3 6
3 -2 10 5 10 -1 12

样例输出:

5 10.000000 2.000000 18.000000 2.000000 22.000000 6.000000 14.000000 18.000000 10.000000 18.000000
3 -4.000000 6.000000 -2.000000 4.000000 -2.000000 6.000000
3 -8.000000 12.000000 4.000000 8.000000 6.000000 12.000000

温馨提示:

The relationship between the sample input and output polygons is illustrated in the figure below. Solid lines indicate the polygon joining the Foreign Offices, whereas dashed lines indicate the polygon joining the meeting locations. To generate further sample input you may use your solution to Problem 1939.

解题代码:

//* @author: [email protected]
import java.util.*;
public class Main
{
 public static void main(String[] args)
  {
   Scanner in=new Scanner(System.in);
   while(in.hasNext())
   {
	int a=in.nextInt();
	double[] x=new double[a];
	double[] y=new double[a];
	for(int i=0;i< a;i++)
	{
		x[i]=in.nextDouble();
		y[i]=in.nextDouble();
	}
	double sx=0,sy=0,uu=-1;
	System.out.print(a);
	for(int i=0;i< a;i++)
	{
		sx=sy=0;
		for(int j=i;j< a+i;j++)
		{
		  sx+=x[j%a]*Math.pow(uu, j-i);
		  sy+=y[j%a]*Math.pow(uu, j-i);
		}
		System.out.printf(" %.6f %.6f",sx,sy);
	}
	System.out.println();
    }
  }
}

  1. 题目需要求解的是最小值,而且没有考虑可能存在环,比如
    0 0 0 0 0
    1 1 1 1 0
    1 0 0 0 0
    1 0 1 0 1
    1 0 0 0 0
    会陷入死循环

  2. #!/usr/bin/env python
    def cou(n):
    arr =
    i = 1
    while(i<n):
    arr.append(arr[i-1]+selfcount(i))
    i+=1
    return arr[n-1]

    def selfcount(n):
    count = 0
    while(n):
    if n%10 == 1:
    count += 1
    n /= 10
    return count

  3. 站长好。我是一个准备创业的互联网小白,我们打算做一个有关国*际*游*学的平台。手上也有了一些境外资源。现阶段的团队现在没有cto.原意出让一些管理股寻找一个靠谱的技术专家做合伙人, 不知道是不是能得到您的帮助。发个帖子或者其他方式。期待您的回应。可以加我微信tianxielemon聊聊。