zoukankan      html  css  js  c++  java
  • 集训作业 洛谷P1101 单词方阵

    这个题的长度真的有点长,我直接放图片吧

    这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢。

    #include<iostream>
    #include<string>
    #include<cstdio>
    using namespace std;
    string a[300],shu[300];
    int aa[8]={0,-1,-1,-1,0,1,1,1},bb[8]={1,1,0,-1,-1,-1,0,1},z,a1,a2;
    string s="yizhong";
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                shu[i]+='0';//初始化
            }
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(a[i][j]=='y')//开头出现了!
                {
                    for(int x=0;x<8;x++)//8向搜索
                    {
                        z=0;
                        a1=i;
                        a2=j;
                        for(int ss=0;ss<6;ss++)//yizhong去掉y还有6位
                        {
                            a1+=aa[x];
                            a2+=bb[x];
                            if(a1<0||a1>n||a2<0||a2>n)//越界了
                            {
                                z=1;
                            }
                            if(a[a1][a2]!=s[ss+1])//不匹配
                            {
                                z=1;    
                            }  
                            if(z==1)
                            {
                                break;
                            }        
                        }
                        a1=i;
                        a2=j;
                        if(z==0)//如果找到了一个完整的yizhong
                        {
                        	for(int i=0;i<7;i++)//替换
                        	{
                        		shu[a1][a2]=a[a1][a2];
                        		a1+=aa[x];
                        		a2+=bb[x];
                        	}
                        }
                    }
                }
            }
        }
        for(int i=0;i<n;i++)
        {
        	for(int j=0;j<n;j++)
        	{
        		if(shu[i][j]=='0')处理‘*’
        		{
        			shu[i][j]='*';
        		}
        	}
        }
        for(int i=0;i<n;i++)//输出
        {
        	cout<<shu[i]<<endl;
        }
        return 0;
    }
    

    这个写的有点水,没看懂的话可以去隔壁的dgdger大佬哪里,我实在没找到其他可讲的地方了。

  • 相关阅读:
    10、Python的while与死循环
    8、 Python的if分支练习题
    7、 Python中的if多重判断
    6、Python的if判断和两重判断
    5、运算符
    4、数据类型:字典
    placeholder 颜色更改
    禁止video在苹果手机上的自动全屏播放
    点击label出发两次点击事件
    instanceof 和 typeof
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12889684.html
Copyright © 2011-2022 走看看