码迷,mamicode.com
首页 > 其他好文 > 详细

【题解】彩色的棋子

时间:2019-05-03 18:12:01      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:ide   play   names   参考   hid   opened   std   bsp   strong   

题目描述

  小S正趴在地上画画,发现书桌上有一个国际象棋棋盘,上面还放了一些棋子。她想用手中的彩笔给这些棋子都涂上颜色,使得每一行或每一列里没有颜色相同的棋子。

  小S想知道她至少要用几种彩笔呢?

 

输入格式

  第一行,一个整数N(1≤N≤100),表示国际象棋的棋盘规模是N×N的。

  接下来是一个N×N的字符矩阵,由“×”和“.”两种字符组成。如果矩阵中第i行第j列的字符是“×”,则表示棋盘上第i行第j列的格子中有一个棋子;如果是“.”,则那个格子是空着的。

 

输出格式

  一个整数M,表示至少要涂M种颜色。

 

输入样例

2

*.

**

 

输出样例

2

 

题解

  容易想到,答案即为棋子数量最多的行或列的棋子数量。

技术图片
#include <iostream>
#include <algorithm>
#include <cmath>
#define MAXN 101

using namespace std;

int n;
char a[MAXN][MAXN];
int fx[MAXN][MAXN], fy[MAXN][MAXN];
int ans;

int main()
{
    cin >> n;
    for(register int i = 1; i <= n; i++)
    {
        for(register int j = 1; j <= n; j++) 
        {
            cin >> a[i][j];
        }
    }
    for(register int i = 1; i <= n; i++)
    {
        for(register int j = 1; j <= n; j++)
        {
            fx[i][j] = fx[i][j - 1] + (a[i][j] == *);
            fy[j][i] = fy[j][i - 1] + (a[i][j] == *);    
            ans = max(ans, max(fx[i][j], fy[j][i]));
        }
    }
    cout << ans;
    return 0;
} 
参考程序

 

【题解】彩色的棋子

标签:ide   play   names   参考   hid   opened   std   bsp   strong   

原文地址:https://www.cnblogs.com/kcn999/p/10805683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!