2019牛客国庆集训排队day1 A题 题解
全 1 子矩阵
https://ac.nowcoder.com/acm/contest/1099/A
题解:
//#include <bits/stdc++.h>
#include "stdio.h"
#include "iostream"
#include "algorithm"
#define ll long long //定义宏
#define sc scanf
#define pr printf
using namespace std;
char s[15][15];
int main() {
int n, m;
ios::sync_with_stdio(false);
while (sc("%d%d", &n, &m) > 0 /*!= EOF*/) { /*> 0*/
int a = 0, b = 0, c = 0, d = 0;
int cnt = 0;
for (int i = 1; i <= n; i++) {
sc("%s",s[i] + 1);
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (s[i][j] == '1'){
a = i, b = j;
goto q1;
}
}
}
q1:;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if(s[i][j] == '1'){
cnt++;
}
}
}
for (int i = n; i >= 1; i--){
for (int j = m; j >= 1; j--) {
if (s[i][j] == '1') {
c = i; d = j;
goto q2;
}
}
}
q2:;
for (int i = a; i <= c; i++)
{
for (int j = b; j <= d; j++) {
if (s[i][j] != '1') {
pr("No\n");
goto q;
}
}
}
if (cnt == (c - a + 1) * (d - b + 1)) {
pr("Yes\n");
}
else {
pr("No\n");
}
q:;
}
return 0;
}goto与break语句的区别还是挺大的;
break只跳出当前循环,而goto则是想跳哪就跳哪;
一般不介意使用goto语句,因为goto容易造成逻辑混乱,
而所有能用goto语句实现的功能都能用其他语句代替;
想了解更多可以自己百度,毕竟能动手,就不要哔哔。
vivo公司氛围 351人发布

查看8道真题和解析