zoukankan      html  css  js  c++  java
  • 1216 红与黑

    豁哗

    画画的baby,画画的baby,奔驰的小野马和带刺的玫瑰。。。。。。

    又做出来一道,很开森呐~~~

    这道题其实和迷宫差不多,甚至要更简单一些,所以

    老套路,地图,标记,方向,多了一个答案

    答案就是每走一步黑就累加,求其最大值,说白了就是,尽量遍历全部的黑色方格并且要求其数目最大即可

    上代码!!!

    #include<bits/stdc++.h>
    using namespace std;
    
    int w, h;//方格大小     
    int sx, sy;//起始位置“@”的位置       
    char mp[25][25];//地图 
    char c;//字符          
    int ans;//答案          
    int fx[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//方向 
    
    //函数遍历 
    void dfs(int x,int y){
        mp[x][y]='#';//将自己走过的地方标记为红色,也就是说这一步已经走过了,不可以重复走 
        ans++;//每遍历一个黑色方格就加一 
        for(int i=0;i<4;i++){//方向遍历 
            int nx=x+fx[i][0];
            int ny=y+fx[i][1];
            if(nx>=0 && nx<h && ny>=0 && ny<w && mp[nx][ny]=='.')//限制条件:是否越界并且是否下一步的方格为黑色 
                dfs(nx,ny);
        }
    }
    int main()
    {
        while(1){
            cin>>w>>h;//方格大小 
            getchar();//过滤换行符               
            if(w==0 && h==0)break;//结束判断        
            for(int i=0;i<h;i++) cin>>mp[i];//输入 
            for(int i=0;i<h;i++){ 
                for(int j=0;j<w;j++){
                    if(mp[i][j] == '@'){
                        sx=i , sy=j;//标记自己的初始位置 
                    }
                }
            }
            ans=0;//答案附初始值为0   
            dfs(sx,sy);        
            cout<<ans<<endl;//输出 
        }
        return 0;
     }
  • 相关阅读:
    集合set
    字典
    元组
    列表
    for循环
    Windows调试2.异常产生详细流程
    双机环境搭建
    Windows调试1.WinDbg基本使用-异常基础知识
    PE基础7-HOOK练习
    PE基础6_远程线程注入-HOOK(消息-InLine-IAT)
  • 原文地址:https://www.cnblogs.com/qwn34/p/13732771.html
Copyright © 2011-2022 走看看