修剪草坪
来源:互联网 发布:华北师范大学网络教育 编辑:程序博客网 时间:2024/06/09 14:48
问题描述
有一个n*m的草坪(1<=n,m<=100),草坪中的草原来的高度都是100。现在使用割草机修剪草坪,来得到各种各样的图案。割草机只 能横着或者竖着割草。每次割草都会先设定一个高度,割完之后会把比设定高度高的草都割成设定的高度。比如草原来是5 2 8,设定高度为4,那么割完之后就变成了4 2 4。
现在给出一个图案,问是否可以把草坪割成图案的样子。
输入第一行包含两个整数n和m。
接下来为n行输入,每行包含m个不大于100的正整数。
如果可以修剪成输入的图案,则输出“YES”,否则输出“NO”。
- 3 3↵
- 2 1 2↵
- 1 1 1↵
- 2 1 2↵
- YES↵
存在解的条件是,对于每一个要修剪成的高度来说,他必为其所对应行和列的最大值。原因在于,如果他不是所在行和列的最大值,那么为了修剪到该高度就必须要破坏所在行和列的高度,这是不满足题意的。所以本题只需要求出该矩阵每行每列的最大值,比较即可。
实现代码
<span style="font-family:Microsoft YaHei;font-size:14px;">#include<stdio.h>int main(){int n,m;int i,j,temp=1;int a[101][101],b[101][101];scanf("%d%d",&n,&m); for(i=0;i<n;i++){for(j=0;j<m;j++){scanf("%d",&a[i][j]);}}for(i=0;i<n;i++){b[i][0]=a[i][0]; for(j=1;j<m;j++) { if(a[i][j]>b[i][0]) //找到每一行的最大值 { b[i][0]=a[i][j]; } }}for(i=0;i<m;i++){b[i][1]=a[0][i]; for(j=1;j<n;j++) { if(a[j][i]>b[i][1]) //找到每一列的最大值 { b[i][1]=a[j][i]; } }}for(i=0;i<n;i++){for(j=0;j<m;j++){if(b[i][0]>a[i][j]&&b[j][1]>a[i][j]) //判断 {temp=0;break;}}} if(temp==1){printf("YES\n");}elseprintf("NO\n");return 0;}</span>
1 0
- 修剪草坪
- 修剪草坪
- 修剪草坪
- 修剪草坪
- tyvj 修剪草坪
- [BZOJ2442]修剪草坪
- BZOJ2442 修剪草坪
- 小学期 修剪草坪
- [DP][USACO Open11] 修剪草坪
- 2442: [Usaco2011 Open]修剪草坪
- 【BZOJ2442】【Usaco2011 Open】修剪草坪
- BITCS2016程序设计 | 2. 修剪草坪
- BZOJ2442: [Usaco2011 Open]修剪草坪
- 修剪草坪(单调队列)
- 2442: [Usaco2011 Open]修剪草坪
- 2013-BIT程序设计 2.修剪草坪 -- 暴力
- BZOJ 2442: [Usaco2011 Open]修剪草坪
- bzoj 2442: [Usaco2011 Open]修剪草坪
- docker镜像
- zoj-3927-Programming Ability Test
- Spark生态之Alluxio学习2---Spark从tachyon中读取文件
- 7.首次运行 - IntelliJ IDEA 使用教程
- axis和xfire以及CXF三种方式实现WebServices分别有什么优缺
- 修剪草坪
- 工厂模式-c++实现
- 【Anrdoid】开发中异常的处理
- WIN10 JAVA环境变量配置——几经辗转又重装了系统,分享一下Java环境变量的配置
- Fork and Join: Java编写并发程序(重要)
- 自定义View
- SDAU练习三1003
- jquery实现全选功能
- 设计模式(总结)---创建型设计模式