zoukankan      html  css  js  c++  java
  • poj2941

    题意:给一个n*n矩阵,问选n个格,每行一个每列一个,是否任意选法的加和都相等。

    分析:我们认为我们只选择对角线上的n个格。这样任意两种选法可以通过行列交换来得到。如果要选(1,2)(2,1)可以交换1,2两列,然后仍然选择对角线。由于有些情况可能需要多次交换,这样就要求任意一次交换不能影响加和。所以矩阵中任意的矩形的四角都满足a+c=b+d。即a-b=c-d。即任意两列,所有对应位差相等。有一个简便的判别方法,任意两列对应位差相等<=>所有相邻列对应位差相等。

    View Code
    #include <iostream>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <cstdio>
    usingnamespace std;

    #define maxn 1005

    int n;
    int map[maxn][maxn];

    void input()
    {
    for (int i =0; i < n; i++)
    for (int j =0; j < n; j++)
    scanf(
    "%d", &map[i][j]);
    }

    bool ok()
    {
    for (int i =1; i < n; i++)
    {
    int x = map[i][0] - map[i -1][0];
    for (int j =0; j < n; j++)
    if (map[i][j] - map[i -1][j] != x)
    returnfalse;
    }
    returntrue;
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    while (scanf("%d", &n), n)
    {
    input();
    if (ok())
    printf(
    "homogeneous\n");
    else
    printf(
    "not homogeneous\n");
    }
    return0;
    }
  • 相关阅读:
    olcano调度器源代码走读actions篇
    dlv volcano scheduler
    informer
    DeltaFIFO reflector
    第五章 Redis集群
    第四章 Redis主从
    第三章 ACL安全策略
    第二章 Redis数据类型
    第一章 Redis基本原理
    第九章 Confluence集成Jira
  • 原文地址:https://www.cnblogs.com/rainydays/p/2175535.html
Copyright © 2011-2022 走看看