题解:
//#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语句实现的功能都能用其他语句代替;
想了解更多可以自己百度,毕竟能动手,就不要哔哔。