zhaoyiting0915 2016-09-08 12:34 采纳率: 0%
浏览 1208

信息学竞赛题目 迷宫 哪里不对?

【问题描述】
给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式。保证起点上没有障碍。
【输入文件】
第一行N、M和T,N为行,M为列,T为障碍总数。
第二行起点坐标SX,SY,终点坐标FX,FY。
接下来T行,每行为障碍的坐标。
【输出文件】

给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方案总数。

我的程序只通过了4个点,还有6个不对……
哪里不对?

#include
#include
using namespace std;
int map[2333][2333],n,m,t,sx,sy,fx,fy,s;
void move(int x,int y){
map[x][y]=-1;
if((x==fx)&&(y==fy)){
s++;}
if((y!=m)&&(map[x][y+1]==0))move(x,y+1);
if((x!=n)&&(map[x+1][y]==0))move(x+1,y);
if((y!=1)&&(map[x][y-1]==0))move(x,y-1);
if((x!=1)&&(map[x-1][y]==0))move(x-1,y);
}
int main(){
freopen("maze.in","r",stdin);
freopen("maze.out","w",stdout);
int i,j,k;
scanf("%d%d%d",&n,&m,&t);
memset(map,0,sizeof(map));
scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
for(k=0;k<t;k++){
scanf("%d%d",&i,&j);
map[i][j]=-1;}
s=0;
if(map[fx][fy]==-1){
printf("0");
return 0;}
move(sx,sy);
printf("%d",s);
}


  • 写回答

1条回答

  • zqbnqsdsmd 2016-11-14 15:43
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图