假设a[i][j]是需要修剪成的图案的一个点的高度,比如测试样例里面给的矩阵
存在解的条件很简单,任意i,j,存在a[i][j]是第i行或者第j列的最大值
试想一下,如果a[i][j]既不是第i行也不是第j列的最大值,为了剪它必然会破坏i行或者j列.
#include
#define max(a,b) (a>b?a:b)
int maxrow[110], maxcol[110];
int a[110][110];
int main () {
int n , m;
scanf("%d %d", n, m);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
scanf("%d", a[i][j]);
maxrow[i] = max(a[i][j],maxrow[i]);
maxcol[j] = max(a[i][j],maxcol[j]);
}
}
bool isok = true;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (maxrow[i] > a[i][j] maxcol[j] > a[i][j]) {
isok = false;
}
}
}
if (isok) {
printf("YESn");
}
else {
printf("NOn");
}
return 0;
}