c++解决迷宫寻路问题
[cpp]// time.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
#include <list>
using namespace std;
int box[8][10]={{1,1,1,1,1,1,1,1,1,1},
{1,0,1,1,1,0,1,1,1,1},
{1,1,0,1,0,1,1,1,1,1},
{1,0,1,0,0,0,0,0,1,1},
{1,0,1,1,1,0,1,1,1,1},
{1,1,0,0,1,1,0,0,0,1},
{1,0,1,1,0,0,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1}};
struct sPoint
{
sPoint(int x1,int y1){x=x1;y=y1;}
int x;
int y;
};
void calc(int *box,int width,int height,sPoint start,sPoint end)
{
list<sPoint> s;
box[start.x*width+start.y]=2;
int x=start.x,y=start.y;
s.push_back(sPoint(x,y));
while(1)
{
if(x==end.x && y==end.y)
{
while (!s.empty())
{
cout<<s.front().x<<" "<<s.front().y<<endl;
s.pop_front();
}
break;
}
else
{
//cout<<x<<" "<<y<<endl;
}
bool bGo=false;
for(int i=0;i<8;i++)
{
switch(i)
{
case 0:
{
if(y>0 && box[(y-1)*width+x]==0)
{
y=y-1;
box[y*width+x]=2;
s.push_back(sPoint(x,y));
bGo=true;
}
break;
}
case 1:
{
if(x<width-1 && y>0 && box[(y-1)*width+x+1]==0)
{
x=x+1;
y=y-1;
box[y*width+x]=2;
s.push_back(sPoint(x,y));
bGo=true;
}
break;
}
case 2:
{
if(x<width-1 && box[y*width+x+1]==0)
{
x=x+1;
box[y*width+x]=2;
s.push_back(sPoint(x,y));
bGo=true;
}
break;
}
case 3:
{
if(x<width-1 && y<height-1 && box[(y+1)*width+x+1]==0)
{
x=x+1;
y=y+1;
box[y*width+x]=2;
s.push_back(sPoint(x,y));
bGo=true;
}
break;
}
case 4:
{
if(y<height-1 && box[(y+1)*width+x]==0)
{
y=y+1;
box[y*width+x]=2;
&
补充:软件开发 , C++ ,
- 更多C/C++疑问解答:
- 关于c++的cout输出的问题。
- 在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
- 全国计算机二级C语言笔试题
- 已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
- c++数据结构内部排序问题,整数排序
- 2012九月计算机二级C语言全国题库,,急求急求
- 如果assert只有一个字符串作为参数,是什么意思呢?
- C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
- 为什么用结构体编写的程序输入是,0输不出来啊~~~
- 将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
- 为什么这个程序求不出公式?
- 这个链表倒置的算法请大家分析下
- c语言函数库调用
- C语言unsigned int纠错
- C语言快排求解啊