zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    什么破题啊

    简直就是浪费我时间!

    我每天还被我xf定目标了不知道嘛!

    题目

    朴素的搜索只能得90分

    #include <cstdio>
    #include <iostream>
    using namespace std;
    const int N = 110;
    bool vis[N][N];
    int n, m, mp[N][N], ans;
    int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; 
    int read() {
        int s = 0, w = 1;
        char ch = getchar();
        while(!isdigit(ch)) {if(ch == '-') w = -1; ch = getchar();}
        while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = getchar();}
        return s * w;
    }
    void dfs(int xx, int yy, int sum) {
        ans = max(ans, sum);
        for(int i = 0; i < 4; i++) {
            int x = dx[i] + xx, y = dy[i] + yy;
            if(x >= 1 && x <= n && y >= 1 && y <= m && !vis[x][y] && mp[x][y] < mp[xx][yy]) 
                dfs(x, y, sum + 1); 
        }
    }
    int main() {
        n = read(), m = read();
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
                mp[i][j] = read();
        for(int i = 1; i <= n; i++) 
            for(int j = 1; j <= m; j++)
                dfs(i, j, 0);
        printf("%d
    ", ans + 1);
        return 0;
    }

    需要加入记忆化搜索

    真想骂街我的记忆化怎么怎么就不对

    可能是我太毛躁了

    于是我就点开了题解

    Code:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    const int N = 110;
    int n, m, mp[N][N], ans, maxn[N][N];
    int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1}; 
    int read() {
        int s = 0, w = 1;
        char ch = getchar();
        while(!isdigit(ch)) {if(ch == '-') w = -1; ch = getchar();}
        while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = getchar();}
        return s * w;
    }
    int dfs(int xx, int yy) {
        if(maxn[xx][yy] != 1) return maxn[xx][yy];
        int anss = 0;
        for(int i = 0; i < 4; i++) {
            int x = dx[i] + xx, y = dy[i] + yy;
            if(x >= 1 && x <= n && y >= 1 && y <= m && mp[x][y] < mp[xx][yy]) 
                anss = max(anss, dfs(x, y) + 1);
            maxn[xx][yy] = max(maxn[xx][yy], anss);
        }
        return maxn[xx][yy];
    }
    int main() {
        n = read(), m = read();
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
                mp[i][j] = read(), maxn[i][j] = 1;
        for(int i = 1; i <= n; i++) 
            for(int j = 1; j <= m; j++) {
                int anss = dfs(i, j);
                ans = max(ans, anss);
            }
        printf("%d ", ans);
        return 0;
    }

    TTT,TnmT!不是脏话

    谢谢收看,祝身体健康!(反正我是被气死了)

  • 相关阅读:
    4.单例模式
    3.适配器模式
    2.策略模式
    1.工厂模式
    机器学习
    何为技术领导力
    图像像素的算术操作
    图像对象创建和赋值的区别
    图像色彩空间转换
    notepad更改文档编码格式
  • 原文地址:https://www.cnblogs.com/yanxiujie/p/11711855.html
Copyright © 2011-2022 走看看