zoukankan      html  css  js  c++  java
  • B. Find the Spruce(递推)

    起初想法时暴力搜索,但是忽略了数据范围,直接给T了。当时还硬着头皮想推出个什么公式加上搜索做出来,

    到后来看到题解后才发现递推才是正道。不过递推的顺序是从下往上来的,从上往下来也可以,不过很麻烦。

    从下往上走,每当碰到一棵云杉点的时候这个点就是它下面三个点的最小值 +1,如果不是云杉点,那么就要

    将这个点的值设为0,因此还需要一个整数数组用来统计。

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 505;
    char maze[N][N];
    int ans[N][N];
    int n, m; 
    int check(int x, int y){
        if(maze[x][y] != '*')
            return 0;
        if(maze[x][y] == '*')
            if(x == n || y == 1 || y == m)
                return 1;
            
        int minn = 0x3f3f3f3f;
        for(int i = y - 1; i <= y + 1; i ++)
            minn = min(minn, ans[x + 1][i] + 1);
        
        return minn;
    }
    int main(){
        int t;
        cin >> t;
        while(t --){
            memset(ans, 0, sizeof ans);
            cin >> n >> m;
            for(int i = 1; i <= n; i ++)
                cin >> maze[i] + 1;
            int res = 0;
            for(int i = n; i >= 1; i --){
                for(int j = 1; j <= m; j ++){
                    res += check(i, j);
                    ans[i][j] = check(i, j);
                }
            }
            cout << res << endl;
        }
        
        
        return 0;
    }
  • 相关阅读:
    安装tomcat
    sed
    a'w'k
    dwr??
    tomcat-性能?
    windows清理命令
    markdown超链接怎么写?
    ※剑指offer系列19:二叉搜索树与双向链表
    剑指offer系列17:二叉搜索树的后序遍历序列
    剑指offer系列18:二叉树中和为某一值得路径
  • 原文地址:https://www.cnblogs.com/pureayu/p/14152302.html
Copyright © 2011-2022 走看看