题解 | #字符迷阵-3向递归#

字符迷阵

http://www.nowcoder.com/practice/8fb1e165abcb4b709d5a2f0ba759d0a6

//

#include <iostream>
#include <vector>
#include <string>
#include <map>
using namespace std;

class solution
{
    public:
    int count;
    vector<vector<char> > ss;
    string str;
    public:
    void deal(int i,int j,int now,int type)
    {
    if(i<=ss.size()-1&&j<=ss[i].size()-1)
    {
        if(ss[i][j]==str[now])
        {
            if(now==str.size()-1) count++;
            
            switch(type)
            {
                case 1:deal(i+1,j+1,now+1,1);break;
                case 2:deal(i,j+1,now+1,2);break;
                case 3:deal(i+1,j,now+1,3);break;
                default:break;
            }
        }
    }

    }
};

int main(void)
{
    int len,wid,num;
    cin>>num;
    solution s;
    string str_;
    while(num--)
    {
        
        cin>>len>>wid;
        vector<vector<char> > table(len,vector<char>(wid,0));
        for(int i=0;i<=len-1;i++)
        {
            for(int j=0;j<=wid-1;j++)
            {
                cin>>table[i][j];
                //cout<<table[i][j];
            }
           //cout<<endl;
        }
         //cout<<"................"<<endl;
        
        cin>>str_;
        //cout<<"str:"<<str_<<endl;
        
         //cout<<"................"<<endl;
        
        s.str = str_;
        s.count = 0;
        s.ss = table;
        
    for(int i=0;i<=len-1;i++)
      for(int j=0;j<=wid-1;j++)
      {
            s.deal(i, j, 0,1);
            s.deal(i, j, 0,2);
            s.deal(i, j, 0,3);
      }
        
       cout<<s.count<<endl;
        
        
    }
    
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务