📄 no_6.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 + -