Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

各位师兄帮下忙!新手求救啊 一道类似迷宫的问题

Posted by ptchenmin at 2007-05-20 20:07:35
问题描述:
对于某个m*n的字符串数组,相当于一个m行n列的平面形状的方格。里面S表示起点,W表示障碍,B表示可走(但是不一定可以通),X表示出口。对于起点S,有8个方向可以走,当然前提是在没有障碍的情况之下,其中可以分为单步走(on foot)和跳步走(by jump)两种情况,从起点S开始追寻最短的出口路径count2。
测试数据:
Sample Input
3
3 3
SWB
BWB
XBB
5 4
BXWB
BBWS
BBWB
BBWB
BBBB
3 2
WX
WW
WS
Sample Output
2
2
NO ANSWER


我的算法:
#include "iostream.h"
#include "string.h"
#include "stdio.h"
char maze[100][100];
int fc[8]={2,2,-2,-2,1,-1,0,0},fr[8]={2,-2,2,-2,0,0,1,1},total,startc,startr,endc,endr;

int check(int i,int j,int k,int c,int r)
{
	int flag=1;
	i=i+fc[k];
	j=j+fr[k];
	if(i<1 || i>c || j<1 || j>r)
		flag=0;
	else if(maze[i][j]=='W')
		flag=0;
	return flag;
}

void output(int c,int r)
{
	int i,j;
	for(i=1;i<=c;i++)
	{
		cout<<endl;
		for(j=1;j<=r;j++)
		{
			if(maze[i][j]=='0')
			{   
				printf("%c",'*');
				total=total+1;
			}
			else
				printf("%c",'+');
		}
	}
}

void search(int i,int j,int c,int r)
{
	int k,newc,newr;
	for(k=1;k<=8;k++)
	{
		if(check(i,j,k,c,r)==1)
		{
			newc=i+fc[k];
			newr=j+fr[k];
			maze[newc][newr]='0';
			if(newc==endc && newr==endr)
			{
				output(c,r);
				break;
			}
			else
				search(newc,newr,c,r);
		}
	}
	maze[i][j]='1';
}


void main()
{
	int c,r,i,j;
	cin>>c>>r;
	for(i=1;i<=c;i++)
	{
		for(j=1;j<=r;j++)
		{
			cin>>maze[i][j];
			//scanf("%c",&maze[i][j]);
			if(maze[i][j]=='S')
			{
				startc=i;
				startr=j;
			}
			if(maze[i][j]=='X')
			{
				endc=i;
				endr=j;
			}
		}
	//getchar();
	}
	total=0;
	maze[startc][startr]='0';
	search(startc,startr,c,r);
	cout<<endl;
	cout<<total<<endl;
	//pintf("%d\n",search(startc,startr,c,r));
}

请大家帮帮忙啊!程序哪里有错,得不到答案啊。谢谢!邮箱是ptchenmin1987@163.com

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator