题目描述

某国法律规定,只要一个由 N \times MN×M 个小方块组成的旗帜符合如下规则,就是合法的国旗。(毛熊:阿嚏——)

  • 从最上方若干行(至少一行)的格子全部是白色的;
  • 接下来若干行(至少一行)的格子全部是蓝色的;
  • 剩下的行(至少一行)全部是红色的;

现有一个棋盘状的布,分成了 NN 行 MM 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成该国国旗,方法是在一些格子上涂颜料,盖住之前的颜色。

小a很懒,希望涂最少的格子,使这块布成为一个合法的国旗。

输入格式

第一行是两个整数 N,MN,M。

接下来 NN 行是一个矩阵,矩阵的每一个小方块是W(白),B(蓝),R(红)中的一个。

输出格式

一个整数,表示至少需要涂多少块。

输入输出样例

输入 #1复制

4 5
WRWRW
BWRWB
WRWRW
RWBWR

输出 #1复制

11

说明/提示

样例解释

目标状态是:

WWWWW
BBBBB
RRRRR
RRRRR

一共需要改 1111 个格子。

数据范围

对于 100\%100% 的数据,N,M \leq 50N,M≤50。

分析:

这道题说实话有点难,但是因为数据很小,暴力穷举就可以,如果数据大的话,估计会超时,我也没想到什么好的巧妙的办法....

暴力穷举法思想:map数组存原始国旗,然后mark数组中有两个数为1,其余均为0,其中第一个1,代表蓝色开始涂的那一行(包括这行),第二个1代表的是蓝色结束的下一行(即 蓝色在上一行结束),然后进行全排列,依次比较所有蓝色开始和结束的情况,找到最小的代价值

注意:函数next_permutation(a,a+4),a是数组起始地址,如果你的数组是从0开始赋值的,有四个元素,那么这么写没问题,但如果你的数组是从1开始赋值的,那么,就要改成函数next_permutation(a+1,a+4+1),a+1好说,因为是从a[1]开始的,可是a+4之后为什么还要+1,不应该刚好到结束那个位置吗?这里要注意,第二个参数的意义,是代表从开始位置算起,往后数n个数,起始位置算第一个。总而言之,要注意next_permutation函数的这两个参数,怕搞混的小伙伴,可以输出一下全排列的数组,来确定参数到底是什么

上AC代码:

#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
using namespace std;
int n;
int m;
int ans=9999999;
int sum=0;
char map[55][55];
int mark[55];int paint();
int main()
{memset(mark,0,sizeof(mark));cin>>n>>m;mark[n-1]=1;mark[n]=1;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)cin>>map[i][j];getchar();}do{/*cout<<"mark is"<<endl;for(int i=1;i<=n;i++)cout<<mark[i]<<" ";cout<<endl;*/int temp=paint();if(temp<ans)ans=temp;}while(next_permutation(mark+2,mark+n+1));cout<<ans;return 0;
}
int paint()
{sum=0;int temp1=0,temp2=0;for(int i=1;i<=n;i++){if(mark[i]==1){if(temp1==0)temp1=i;elsetemp2=i;}    }for(int i=1;i<temp1;i++){for(int j=1;j<=m;j++){if(map[i][j]!='W')sum++;}    }for(int i=temp1;i<temp2;i++){for(int j=1;j<=m;j++){if(map[i][j]!='B')sum++;} }for(int i=temp2;i<=n;i++){for(int j=1;j<=m;j++){if(map[i][j]!='R')sum++;}   }return sum;
}

洛谷-P3392 涂国旗相关推荐

  1. 洛谷p3392计算机教育新社会,洛谷-P3392 涂国旗

    洛谷-P3392 涂国旗 某国法律规定,只要一个由 (N imes M) 个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏--) 从最上方若干行(至少一行)的格子全部是白色的: 接下来若干 ...

  2. 洛谷P3392 涂国旗

    P3392 涂国旗 107通过 507提交 题目提供者kkksc03 标签 难度普及- 提交  讨论  题解 最新讨论 直接读字符会wa WA?-- 为什么不对... 跪求找错 快点给钱 这不就是荷兰 ...

  3. 洛谷 P3392 涂国旗

    P3392 涂国旗 题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏--) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(> ...

  4. P3392 涂国旗——暴力枚举

    涂国旗 题目描述 某国法律规定,只要一个由 N×MN \times MN×M 个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏--) 从最上方若干行(至少一行)的格子全部是白色的: 接下来 ...

  5. 涂国旗(洛谷P3392题题解,Java语言描述)

    题目要求 题目链接 分析 我做的就比较暴力啦,由于三种颜色都至少有一行,所以: W:[0,N−2)W:[0, N-2)W:[0,N−2) B:[1,N−1)B: [1, N-1)B:[1,N−1) R ...

  6. 洛谷 T6476 涂色游戏

    题目描述: 思路: 10^20个格子,乍一看很多,但是仔细一想就会发现,这些格子中的颜色以p1和p2的最小公倍数为周期循环出现.所以我们只需要关注一个循环中的情况即可. 不妨设p1 < p2,那 ...

  7. 【OJ】洛谷暴力枚举题单题解锦集

    题单简介 题目解析 P2241 统计方形(数据加强版) P2089 烤鸡 P1618 三连击(升级版) P1036 选数 P1157 组合的输出 P1706 全排列问题 P1088 火星人 P3392 ...

  8. 洛谷 深基 第4部分 基础数学与数论(19-21课)

    洛谷 深基 第4部分 基础数学与数论  第19章 位运算与进制转换 P1143 进制转换 https://www.luogu.com.cn/problem/P1143 洛谷P1143 进制转换的Pyt ...

  9. 广度优先搜索——填涂颜色(洛谷 P1162)

    题目选自洛谷P1162 首先讲一下思路:根据题意,当找到第一个1时,其右下必然是圈内的0,那么只要从这个0开始广搜寻找联通块就可以了.(因为圈只有一个,那么当找到第一个1之后便要打断循环,很重要!) ...

最新文章

  1. 让你的网站提速:图片优化网站推荐
  2. 数值分区间_EXCEL统计区间个数的专属函数
  3. Using dbms_shared_pool.purge to remove a single task from the library cache
  4. VS, VS Code, VS Online, VS xxx, 你都分清了吗?
  5. mysql8.0.12插件_MySQL8.0.12 安装及配置
  6. vb6 由于超出容量限制 不能创建新事务_分布式限流?你也能轻松玩转(没啥新技术)...
  7. redis单节点安装
  8. hp打印机怎么连接电脑_hp打印机驱动怎么安装 惠普打印机驱动程序安装方法【详解】...
  9. Sublime Text 使用介绍、全套快捷键及插件推荐
  10. HR谈网络工程师求职与职业规划
  11. tablesample oracle,Hive DDL 内部表外部表 分区 分桶 行格式 存储文件格式 概述
  12. 计算机系统内部五大部件的主要连接关系总结
  13. javascript自定义滚动条插件,几行代码的事儿
  14. 基于墨刀实现的原型系统:多啦阅读
  15. Linux查看磁盘是否被占满,怎么查看Linux磁盘空间是否满了?
  16. 重要文件即时搞定,不用插电就能打印,汉印MT800移动便携打印机上手
  17. 中文现代诗歌创作项目
  18. Windows系统下使用WCP搭建自己的本地知识库管理平台
  19. c语言实现123456789变为147258369的方式是输出
  20. linux关闭笔记本自带键盘

热门文章

  1. 离线语音智能家居控制
  2. Flashback 技术总结(转贴整理)
  3. 微信小程序Day2学习笔记
  4. JSP实用教程第二章-JSP语法
  5. GET http://localhost:8080/ 404 (Not Found)
  6. css3实现小图标向下引导小箭头动态效果
  7. zip直链生成网站_防止赖床的闹钟软件、免费好用的看图软件、色卡生成器 今天有什么?...
  8. 沪漂程序媛妹子的一天...
  9. Ae 中英文版本切换批处理文件
  10. 基于MATLAB/yalmip/cplex 的机组最优组合