首页 > 专题系列 > Java解POJ > POJ 2941 Homogeneous Squares [解题报告] Java
2013
11-12

POJ 2941 Homogeneous Squares [解题报告] Java

Homogeneous Squares

问题描述 :

Assume you have a square of size n that is divided into n × n positions just as a checkerboard. Two positions (x1, y1) and (x2, y2), where 1 ≤ x1, y1, x2, y2n, are called “independent” if they occupy different rows and different columns, that is, x1x2 and y1y2. More generally, n positions are called independent if they are pairwise independent. It follows that there are n! different ways to choose n independent positions.

Assume further that a number is written in each position of such an n × n square. This square is called “homogeneous” if the sum of the numbers written in n independent positions is the same, no matter how the positions are chosen. Write a program to determine if a given square is homogeneous!

输入:

The input contains several test cases.

The first line of each test case contains an integer n (1 ≤ n ≤ 1000). Each of the next n lines contains n numbers, separated by exactly one space character. Each number is an integer from the interval [−1000000, 1000000].

The last test case is followed by a zero.

输出:

For each test case output whether the specified square is homogeneous or not. Adhere to the format shown in the sample output.

样例输入:

2
1 2
3 4
3
1 3 4
8 6 -2
-3 4 0
0

样例输出:

homogeneous
not homogeneous

解题代码:

//* @author: [email protected]
import java.io.*;
public class Main
{
 public static void main(String[] args) throws IOException
 {
  InputStreamReader is=new InputStreamReader(System.in);
  BufferedReader in=new BufferedReader(is);
  while(true)
  {
	String s=in.readLine();
	int a=Integer.parseInt(s);
	if(a==0)break;
	int[][] arr=new int[a][a];
	String[] ss;
	for(int i=0;i< a;i++)
	{
	  ss=in.readLine().split(" ");
	  for(int j=0;j< a;j++)
	   arr[i][j]=Integer.parseInt(ss[j]);
	}
	boolean bb=true;
	for(int i=0;i< a-1;i++)
	{
		int k=arr[i][0]-arr[i+1][0];
		for(int j=1;j< a;j++)
		{
	         if(k!=arr[i][j]-arr[i+1][j])
		  {
			bb=false;
			break;
		  }
		}
		if(!bb)break;
	}
	System.out.println((bb?"":"not ")+"homogeneous");
   }
 }
}