zoukankan      html  css  js  c++  java
  • Polygon

    传送门




    刚开始的思路很沙雕,写了一百多行宣布失败

    • 其实发现只需要判断一个1的右面和下面是否都是0就够了

    随意证明:

    对于除了最右列和最下行的元素,其他的1,如果它合理,那么它的右面或者下面一定有相邻的,这样就可以一直推下去,直到到达边界。
    也就是说,对于一个不合理的1,它的右面和下面肯定是0,因为如果为1,这个1就是合理的了,与假设相矛盾。

    So,只要存在一个1它的右面和下面都是0,那么就不成立,反之成立

    #include <bits/stdc++.h>
    using namespace std;
    
    string str[55];
    void solve(){
    	int n;
    	cin >> n; 
    	for(int i = 0; i < n; i ++)
    		cin >> str[i];
    	for(int i = 0; i < n - 1; i ++){
    		for(int j = 0; j < n - 1; j ++){
    			if(str[i][j] == '1' && str[i + 1][j]== '0' && str[i][j + 1] == '0'){
    				cout << "NO" << endl;
    				return;
    			}
    		}
    	}
    	cout << "YES" << endl;
    }
    int main(){
    	int t;
    	cin >> t;
    	while(t --){
    		solve();
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    1. jQuery中的DOM操作
    jQuery查找节点(选择器)
    机器学习基础
    CRF
    NP
    LP
    kernel
    SVM
    凸优化和对偶
    语音识别 -- 概述
  • 原文地址:https://www.cnblogs.com/pureayu/p/14413525.html
Copyright © 2011-2022 走看看