⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 no_6.cpp

📁 具体题目在rar文件里
💻 CPP
字号:
// find.cpp : Defines the entry point for the console application.
//

#include "stdio.h"
#include "stdafx.h"   
#include <string.h>
#define MAXSIZE  10000 // 待存储的最大长度
char a[MAXSIZE][MAXSIZE];
char b[MAXSIZE];
int lastx,lasty,headx,heady,flag=0,result;
typedef  struct {
     char data;          // 关键字项
      int leng,keeper;   // leng表示到达这个位置的最小时间,keeper用于标记守卫的位置
} RcdType;                         // 记录类型

typedef  struct {
     RcdType    a[MAXSIZE][MAXSIZE];
	 
} SqList;
            
SqList L;

void  next()
{
	//front();
	if(L.a[headx-1][heady].data!='#')
	{   
		flag++;
		headx=headx-1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		 if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		 if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		 if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].data=='x')
		{L.a[headx][heady].leng++;flag++;L.a[headx][heady].keeper=1;
		//printf("xxxxxxxxxxxflag=%d\n",L.a[headx][heady].leng);
		}
		if(flag<L.a[headx][heady].leng)
		L.a[headx][heady].leng=flag;
		//printf("1111111111flag=%d;%d\n",L.a[headx][heady-1].leng,L.a[headx][heady].leng);
	
		if(L.a[headx][heady].data=='a')
		{	result=flag;
		//printf("aaaaaaaaaaflag=%d\n",flag);
		}
		L.a[headx][heady].data='#';
		next();
		headx=headx+1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].keeper==1)
		{L.a[headx][heady].leng++;}
		//printf("1111111111flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		flag--;
	}
	//left();
	if(L.a[headx][heady-1].data!='#')
	{   
		flag++;
		
		heady=heady-1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].data=='x')
		{L.a[headx][heady].leng++;flag++;L.a[headx][heady].keeper=1;
		//printf("xxxxxxxxxxxflag=%d\n",L.a[headx][heady].leng);
		}
		if(flag<L.a[headx][heady].leng)
		L.a[headx][heady].leng=flag;
		//printf("2222222222222flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		if(L.a[headx][heady].data=='a')
		{	result=flag;
	   //printf("aaaaaaaaaaflag=%d\n",flag);
		}
		L.a[headx][heady].data='#';
        next();
		heady=heady+1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].keeper==1)
		{L.a[headx][heady].leng++;}
		//printf("2222222222222flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		flag--;
	}
	
	//right();
		if(L.a[headx][heady+1].data!='#')
	{   
		flag++;
		
		heady=heady+1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].data=='x')
		{L.a[headx][heady].leng++;flag++;L.a[headx][heady].keeper=1;
		//printf("xxxxxxxxxxxflag=%d\n",L.a[headx][heady].leng);
		}
		if(flag<L.a[headx][heady].leng)
		L.a[headx][heady].leng=flag;
		//printf("33333333flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		if(L.a[headx][heady].data=='a')
		{	result=flag;
		//printf("aaaaaaaaaaflag=%d\n",flag);
		}
		L.a[headx][heady].data='#';
        next();
		heady=heady-1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
        if(L.a[headx][heady].keeper==1)
		{L.a[headx][heady].leng++;}
		//printf("33333333flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		flag--;
	}
	//down();
		if(L.a[headx+1][heady].data!='#')
	{   
		flag++;
		
		headx=headx+1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
	    if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		//printf("444444444flag=%d:%d\n",flag,L.a[headx][heady].leng);
		if(L.a[headx][heady].data=='x')
		{L.a[headx][heady].leng++;flag++;L.a[headx][heady].keeper=1;
		//printf("xxxxxxxxxxxflag=%d\n",L.a[headx][heady].leng);
		}
		if(flag<L.a[headx][heady].leng)
		L.a[headx][heady].leng=flag;
	   //	printf("444444444flag=%d:%d\n",flag,L.a[headx][heady].leng);
		
		if(L.a[headx][heady].data=='a')
		{	result=flag;
		//printf("aaaaaaaaaaflag=%d\n",flag);
		}
		L.a[headx][heady].data='#';
		next();
		headx=headx-1;
		if(L.a[headx-1][heady].leng<L.a[headx][heady].leng)
		{L.a[headx][heady].leng=L.a[headx-1][heady].leng+1;}
		if(L.a[headx+1][heady].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx+1][heady].leng+1;}
		if(L.a[headx][heady+1].leng<L.a[headx][heady].leng)
			{L.a[headx][heady].leng=L.a[headx][heady+1].leng+1;}
		if(L.a[headx][heady-1].leng<L.a[headx][heady].leng)
            {L.a[headx][heady].leng=L.a[headx][heady-1].leng+1;}
		if(L.a[headx][heady].keeper==1)
		{L.a[headx][heady].leng++;}
		//printf("444444444flag=%d;%d\n",flag,L.a[headx][heady].leng);
		
		flag--;
	}
	
	

}





void main()
{
int i,j,length,width;

printf("input the length:\n");
scanf("%d  %d",&length,&width);

//while(length!=0||width!=0)

for(i=0;i<=length+1;i++)
 for(j=0;j<=width+1;j++)
 {
	 L.a[i][j].data='#';
	 L.a[i][j].leng=MAXSIZE;
	 L.a[i][j].keeper=MAXSIZE;
 }

for(i=1;i<=length;i++)
{
	scanf("%s",&b);
    for(j=0;j<width;j++)
	{
		if(b[j]!='#')
        L.a[i][j+1].data=b[j];
        if(b[j]=='r')
		{headx=i;heady=j+1;}
        if(b[j]=='a')
		{lastx=i;lasty=j+1;}
	}
}


//printf("%d  %d  %d  %d\n",headx,heady,lastx,lasty);
L.a[headx][heady].data='#';
L.a[headx][heady].leng=0;
next();

for(i=1;i<=length;i++)
 {for(j=1;j<=width;j++)
 if(L.a[i][j].leng==10000)printf("** ");
  else if(L.a[i][j].leng>=10) printf("%d ",L.a[i][j].leng);
	  else printf(" %d ",L.a[i][j].leng);
  printf("\n");
 }
printf("result=%d\n",L.a[lastx][lasty].leng);
}
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -