P1101 单词方阵 数组控制无规律一串

在这里插入图片描述
注意:
//这个可以缩减重复代码,用角标即可
char p[9]={‘y’,‘i’,‘z’,‘h’,‘o’,‘n’,‘g’};

using namespace std;
#include <iostream>
char a[105][105];
//这个可以缩减重复代码,用角标即可
char p[9]={'y','i','z','h','o','n','g'}; 
int flag[105][105];
int dx[8]={0,1,0,-1,1,1,-1,-1};
int dy[8]={1,0,-1,0,1,-1,1,-1};
int main ()
{
     int n,i,j;	 
     cin>>n;
     for(i=0;i<n;i++)
     {
     	cin>>a[i];
	 }    
     for(i=0;i<n;i++)
     {
     	for(j=0;j<n;j++)
     	{
     		//以y开头的进行判断
     		if(a[i][j]==p[0])
     		{
     		    //八个方向遍历一下
     			for(int fx=0;fx<8;fx++)
     			{
     			    //判断是否在界限里面
     				if(i+dx[fx]*6>=0&&i+dx[fx]*6<n&&j+dy[fx]*6>=0&&j+dy[fx]*6<n)
     				{
	    				int ff=0;
	    				//之后的七个遍历一下是不是匹配上
		     			for(int f=0;f<7;f++)
		     			{
		     				if(a[i+dx[fx]*f][j+dy[fx]*f]!=p[f])
							ff=1;			
						}    
						if(ff==0) 	
						{
			     			for(int f=0;f<7;f++)
			     			{
			     				flag[i+dx[fx]*f][j+dy[fx]*f]=f+1;		
							} 						
						}	     					
					 }
 							 				
				}
			}
		}
	 }
     for(i=0;i<n;i++)
     {
     	for(j=0;j<n;j++)
     	{
     		if(flag[i][j]==0)
     		{
     			cout<<'*';
			}
			else
			{
				cout<<p[flag[i][j]-1];
			}
		}
		cout<<endl;
	 }	 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值