一个问题的编程思路,路过的有什么好的解决思路呢
我的想法是先在二维数组中分别找到起点和重点的坐标,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 编辑 ]