1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 long i,j,n,g,s,t,a[1001],b[1001];
6 char str[8001];//这里数组开大一点 第一次RT了 数比较大
7 while(scanf("%ld", &n)&&n)
8 {
9 s = 0;
10 t = 0;
11 int flag = 1;
12 scanf("%d", &a[0]);
13 for(i = 1 ; i < n ; i++)
14 {
15 scanf("%ld",&a[i]);
16 b[i] = a[i]-a[i-1];
17 }
18 for(g = 2 ; g <= n ; g++)
19 {
20 scanf("%d", &a[0]);
21 for(j = 1 ;j < n ; j++)
22 {
23 scanf("%d", &a[j]);
24 if(b[j]!=a[j]-a[j-1])
25 {
26 flag = 0;
27 goto in;
28 }
29 }
30 }
31 in:{
32 for(i = g ; i <= n ;i++)
33 gets(str);
34 }
35 if(flag == 1)
36 printf("homogeneous\n");
37 else
38 printf("not homogeneous\n");
39 }
40 return 0;
41 }
这个题很容易TLE 从网上搜了下题解 找了篇比较好的 自己按照思想敲了一遍 搬这里了 也忘记出处了 就不贴原创了
Homogeneous squares
Time Limit: 1000MS Memory limit: 65536K
题目描述
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,y2 ≤ n, are called "independent" if they occupy different rows and different columns, that is, x1≠x2 and y1≠y2. 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 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