zoukankan      html  css  js  c++  java
  • Hihocoder-福字

    Hihocoder-福字

    题目1 : 福字

    时间限制:6000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    新年到了,你收到了一副画。你想找到里面最大的福字。

    一副画是一个n × n的矩阵,其中每个位置都是一个非负整数。

    一个福字被定义成是大小为 k 的正方形,满足其中的每个位置上的数都恰好比他的左边的那个和上边的那个大1(如果左边或上边的那个不存在的话就无此要求)。

    比如

    1 2 3
    2 3 4
    3 4 5
    

    就是一个福字。(注意左上角可以是任何非负整数)。

    你想找到这个矩阵中最大的福字的大小。

    输入

    第一行一个数 n,表示矩阵大小。(n ≤ 1000)

    接下来 n 行,每行 n 个数,表示这个矩阵。矩阵中的数在0到108之间。

    输出

    一行一个数表示最大的福字的大小。

    样例输入
    4
    1 2 3 0
    2 3 4 0
    3 4 5 0
    0 0 0 0
    样例输出
    3

    题解: 

    直接法, O(n^2) 的时间复杂度

    #include <cstdio> 
    #include <cstdlib> 
    #include <cstring> 
    using namespace std; 
    const int MAXN = 1000 + 5; 
    
    int n, ans, num[MAXN][MAXN], cnt[MAXN][MAXN], is_point[MAXN][MAXN];
    
    int main()
    {
    
    	scanf("%d", &n); 
    
    	memset(num, 0, sizeof(num)); 
    	for(int i=1; i<=n; ++i) {
    		for(int j=1; j<=n; ++j) {
    			scanf("%d", &num[i][j]); 
    		}
    	}
    	memset(is_point, 0, sizeof(is_point)); 
    	memset(cnt, 0, sizeof(cnt)); 
    	ans = 0; 
    
    	for(int i=1; i<=n; ++i) {
    		for(int j=1; j<=n; ++j) {
    			if(i>1 && j>1 && num[i][j] == num[i][j-1]+1 && num[i][j] == num[i-1][j]+1) {
    				is_point[i][j] = is_point[i-1][j-1] + 1; 
    				cnt[i][j] = cnt[i-1][j-1] + 1; 
    			}else if(i > 1 && num[i][j] == num[i-1][j] + 1){
    				cnt[i][j] = cnt[i-1][j] + 1; 
    			}else if(j > 1 && num[i][j] == num[i][j-1] + 1){
    				cnt[i][j] = cnt[i][j-1] + 1; 
    			}
    			if(is_point[i][j] > ans){
    				ans = is_point[i][j]; 
    			}
    		}
    	}
    	printf("%d
    ", (ans+1) );
    
    	return 0;
    }
    

      

  • 相关阅读:
    Reflections 0.9.12 Caused by: java.lang.IllegalStateException: zip file closed
    关于使用GATEWAY后静态资源失效问题
    Gbase8.7 和shardingsphere4.1.1适配
    统信UOS笔记(V20)
    mysql笔记
    axios 设置全局取消请求
    arr 转 tree
    云知声 面试题
    百度 二面 99 乘法表
    百度 无人车 面试
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/6417200.html
Copyright © 2011-2022 走看看