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;
    }
  • 相关阅读:
    模版的完全特化与偏特化
    [转]windows消息机制(MFC)
    MFC宏常识
    半透明AlphaBlend
    new、operator new、placement new
    DuplicateHandle
    Mac OS X 更新JAMF域控配置
    生成自签名CA+SSL证书
    Office 2016系列下载地址
    Spring Security静态资源访问
  • 原文地址:https://www.cnblogs.com/pureayu/p/14152302.html
Copyright © 2011-2022 走看看