修剪草坪
2016-05-04 22:46
363 查看
问题描述
有一个n*m的草坪(1<=n,m<=100),草坪中的草原来的高度都是100。现在使用割草机修剪草坪,来得到各种各样的图案。割草机只 能横着或者竖着割草。每次割草都会先设定一个高度,割完之后会把比设定高度高的草都割成设定的高度。比如草原来是5
2 8,设定高度为4,那么割完之后就变成了4 2 4。
现在给出一个图案,问是否可以把草坪割成图案的样子。
输入第一行包含两个整数n和m。
接下来为n行输入,每行包含m个不大于100的正整数。
如果可以修剪成输入的图案,则输出“YES”,否则输出“NO”。
题解思路
存在解的条件是,对于每一个要修剪成的高度来说,他必为其所对应行和列的最大值。原因在于,如果他不是所在行和列的最大值,那么为了修剪到该高度就必须要破坏所在行和列的高度,这是不满足题意的。所以本题只需要求出该矩阵每行每列的最大值,比较即可。
实现代码
有一个n*m的草坪(1<=n,m<=100),草坪中的草原来的高度都是100。现在使用割草机修剪草坪,来得到各种各样的图案。割草机只 能横着或者竖着割草。每次割草都会先设定一个高度,割完之后会把比设定高度高的草都割成设定的高度。比如草原来是5
2 8,设定高度为4,那么割完之后就变成了4 2 4。
现在给出一个图案,问是否可以把草坪割成图案的样子。
输入第一行包含两个整数n和m。
接下来为n行输入,每行包含m个不大于100的正整数。
如果可以修剪成输入的图案,则输出“YES”,否则输出“NO”。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示 3 3↵ 2 1 2↵ 1 1 1↵ 2 1 2↵ | 以文本方式显示 YES↵ | 1秒 | 64M | 0 |
存在解的条件是,对于每一个要修剪成的高度来说,他必为其所对应行和列的最大值。原因在于,如果他不是所在行和列的最大值,那么为了修剪到该高度就必须要破坏所在行和列的高度,这是不满足题意的。所以本题只需要求出该矩阵每行每列的最大值,比较即可。
实现代码
<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"); } else printf("NO\n"); return 0; }</span>
相关文章推荐
- 如何查看VS中预设的路径变量
- Win10系统开启Linux Bash命令行
- 一个新人对于DW标签的理解
- EF框架—Database-First
- SpringMVC3.2.x整合fastJson实现JSONP服务端
- 基于PCL拾取屏幕上三维点坐标
- zoj-3927-Programming Ability Test
- 缓存机制
- EF框架—Database-First
- HDU - 1060 Leftmost Digit (数学取对数)规律
- SpringMVC处理JSON数据
- 关于Linux的常忘命令积累
- 6.安装总结 - IntelliJ IDEA 使用教程
- 5.Mac 系统下安装 IntelliJ IDEA - IntelliJ IDEA 使用教程
- zoj-3693-Happy Great BG
- spring框架设计理念(上)
- 初识scss/sass(2)
- 设计模式之适配器模式
- linux命令大全(3)
- 红米note3图片剪裁bug