zoukankan      html  css  js  c++  java
  • 省赛选拔-C 单词方阵

    //给一n×n的字母方阵,内可能蕴含多个单词。单词在方阵中是沿着同一方向或不同方向连续摆放的。
    //摆放可沿着 8 个方向的任一方向,同一单词摆放时可再改变方向,单词与单词之间可以交叉,因此有可能共用
    //字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:
    //第一行为单词方阵的大小n,n不超过200,第二行为待匹配的单词,长度不超过20,第三行及以下为n x n的字母方阵 
    //要求输出一个带*的字母方阵 
    /*
    输入: 
    
    8
    yizh
    qyizhong
    gydthkjy
    nwidghji
    orbzsfgz
    hhgrhwth
    zzzzzozo
    iwdfrgng
    yyyygggg
    
    输出:
     
    *yizh***
    *y**h**y
    **i****i
    ***z***z
    hh**h**h
    zz******
    i*******
    yy******
    
    */
    
    #include<iostream>
    #include<cstring>
    #include<vector>
    using namespace std;
    char arr[300][300];
    int mask[300][300];
    int dir[8][2]={{0,1},{1,1},{1,0},{1,-1},{-1,0},{-1,-1},{0,-1},{-1,1}};
    typedef struct{
    	int s[100][2];	
    }Steps;
    char cmp[100];
    Steps step;
    void dfs(int k,int i,int j)
    {
    	if(i<0||j<0)
    	{//非法条件
    		return ;
    	}
    	step.s[k][0]=i;step.s[k][1]=j;
    	if(k==strlen(cmp))
    	{//终止条件,记录步骤
    		for(int m=0;m<strlen(cmp);m++)
    		{
    			mask[step.s[m][0]][step.s[m][1]]=1;
    		}
    		return;
    	}
    	if(cmp[k]==arr[i][j])//继续搜索条件
    		for(int m=0;m<8;m++)
    		{
    			dfs(k+1,i+dir[m][0],j+dir[m][1]);
    		}
    	return ;
    }
    int main()
    {
    	int n;cin>>n;
    	scanf("%s",cmp);
    	memset(mask,0,sizeof(mask));
    	for(int i=0;i<n;i++)
    	{
    		scanf("%s",arr[i]);
    	}	
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    		{
    			if(arr[i][j]==cmp[0])
    			{
    				dfs(0,i,j);//当前位置搜索开始; 
    				//cout<<endl;
    			}
    		}
    	//cout<<endl; 
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<n;j++)
    			if(mask[i][j])
    				printf("%c",arr[i][j]);
    			else cout<<"*";
    		cout<<endl;
    	}
    	return 0;
    } 
    
    作者:xmsi
    出处:http://www.cnblogs.com/tldr/
    本文版权归作者和博客园共有,欢迎转载,但转载时请保留此段声明。
  • 相关阅读:
    数据库多表查询,左连接(入门)
    让弹出层始终显示在屏幕正中间
    jq中的ajax合集总结
    ajax之$.getScript()
    Jquery遮罩ShowLoading组件
    jquery中prop()方法和attr()方法的区别
    Bootstrap 响应式实用工具
    VS使用技巧
    ubuntu下postgreSQL安装配置
    基础设施即代码(Infrastructure as Code)
  • 原文地址:https://www.cnblogs.com/tldr/p/10877556.html
Copyright © 2011-2022 走看看