二维数组作业太难了!!帮帮我吧!!
/* 0 1 2 3 4 5 6 7 8 9 10 11 120 1 1 1 1 0 1 1 1 1 1 0 1 1
1 1 3 3 3 1 3 1 3 3 3 3 3 1
2 0 3 3 3 1 3 1 3 3 3 3 3 1
3 1 1 0 1 1 1 1 1 1 1 1 0 1
在这个二维数组中,用户输入一个开始点数字,和一个结束点数字,数字只能为1,求开始点数字到结束点数字最少要走多少步才能到达,
开始点数字只能以横向或竖向移动,3相当于墙,不能通过,0相当于走过这个点需要0步,例如用户输入0 0\n 3 6\n,那么结果应
该为7.
*/
#include <stdio.h>
void main()
{
int a[4][13]={1,1,1,1,0,1,1,1,1,1,0,1,1,1,3,3,3,1,3,1,3,3,3,3,3,1,0,3,3,3,1,3,0,3,3,3,3,3,1,1,1,0,1,0,1,1,1,1,1,1,0,1};
int x,y,a,b;
int he=0;
scanf("%d%d",&x,&y);
scanf("%d%d",&a,&b);
if(a[x][y]==1&&a[a][b]==1)
{
for(int i=0;i<48;i++)
{
if(a[x+1][y]==1||0&&x+1>=0&&x+1<=3)
{
???
}else{break;}
if(a[x-1][y]==1||0&&x-1>=0&&x-1<=3)
{
???
}else{break;}
if(a[x][y+1]==1||0&&y+1>=0&&y+1<=12)
{
???
}else{break;}
if(a[x][y-1]==1||0&&y-1>=0&&y-1<=12)
{
???
}else{break;}
if(x==a&&y==b)
{
???
}
}
}
else
{
printf("输入地点有误");
}
printf("%d",he);
}
想了半天,想不出怎么做,就写了以上一点程序,怎么填if里的东西,全算不出来,太难了,我是初学者,求好心人帮帮我吧!谢谢
[ 本帖最后由 wangziran 于 2009-11-8 17:12 编辑 ]