一个问题的编程思路,路过的有什么好的解决思路呢
我的想法是先在二维数组中分别找到起点和重点的坐标,find();然后起点为初始地,开始每个格子的四个方向分别寻找出路,用递归貌似不太会。例如输入一个5*5的地图:
-----
-B##-
###--
#---#
---H#
程序代码:#include <stdio.h>
#include <stdlib.h>
char find(char*p,int B_pos1,int B_pos2,int H_pos1,int H_pos2 )
void main()
{
int r,c;int i,j;int B_pos1,B_pos2,H_pos1,H_pos2=0;
char *p;
printf("请输入地图的行数和列数,空格隔开:\t");
scanf("%d%d",&r,&c);getchar(); //----此getchar(); 是为了消除前面scanf("%d%d",&r,&c);输入时留下的换行符!
printf("请输入%d行%d列的地图:\n",r,c);
p=(char *)malloc(sizeof(char)*r*c);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
scanf("%c",(p+c*i+j));
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%c\t",*(p+c*i+j));
}
printf("\n");
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(*(p+c*i+j)=='B');
B_pos1=i;
B_pos2=j;
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(*(p+c*i+j)=='H');
H_pos1=i;
H_pos2=j;
}
}
find(p,B_pos1,B_pos2,H_pos1,H_pos2=j);
}
char find(char*p,int B_pos1,int B_pos2,int H_pos1,int H_pos2 )
{
}有什么思路可以给下写这个find函数嘛?
[ 本帖最后由 longxingxiu 于 2014-5-10 13:59 编辑 ]




