当前位置:编程学习 > VC++ >>

VC++问题 高手进哦

#include<stdio.h>
#include<stdlib.h>
#include<time>
#define M 12
#define N 24
char maze[M][N];
char mark[M][N];
struct StackNode{char i,j;}stack{M*N};
int top;
char move[8][2]={{1,1},{0,1},{1,0},{-1,1},{1,-1},{-1,0},{0,-1},{-1,-1}};
int SearchOnePath(int m,int n)
{
int i,j,k,ni,nj,v;
for(i=o;i<m;i++)
for(j=0;j<n;j++)mark[i][j]=o
top=o;mark[0][0]=1;
stack[0].i=0;stack[0].j=0;
while(top>=0)
{
i=stack[top].i;j=stack[top].j;
for(v=0;v<8;v++)
{

ni=i+move[v][0];nj=j+move[v][1];

if(ni>=0&&ni<m&&nj>=0&&nj<n&&mark[ni][nj]==o&&maze[ni][nj]=="0")break;
}
if(v<8)
{

mark[ni][nj]=1;++top;

stack[top].i=ni;stack[top].j=nj;
if(ni==m-1 && nj==n-1)
{puts("");
for(k=0;k<=top;k++)
{

v=k%52;

if(v<26)maze[stack[k].i][stack[k].j]="a"+v

elae maze[stack[k].i][stack[k].j]="A"+v;

printf("->(%d,%d)",stack[k].i,stack[k].j);

if((k+1)%8==0)putchar('\n');
}
putchar('n\');
return 1;
}
}
else--top;
}
return 0;
}
viod create(int m,int n)
{
int i,j;
for(i=o;i<m;i++)
for(j=o;j<=n;j++)
if(rand()%3)maze[i][j]='0';
else maze[i][j]='1';
maze[0][0]='0';maze[m-1][n-n]='0';
}
void show(int m,int n)
{

int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%c",maze[i][j]);
printf("\n");
}
}
void main()
int m,n;
srand((unsigned)time(NULL))
m=rand()%(M-2)+2;
n=rand()%(N-2)+2;
create(m,n);
puts("迷宫");
zshow(m,n);
if(SearchOnePath(m,n))show(m,n);
else puts("找不到任何路径");
}
帮忙解释下全部代码的详细意思
答案:兄台,我很佩服你的毅力,我也为能看懂你写代码高兴,太让我兴奋,居然能把你的程序改成运行正确的!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define M 12
#define N 24

char maze[M][N];
char mark[M][N];

struct StackNode
{
char i;
char j;
};

StackNode stack[M*N];

int top;
char move[8][2]={{1,1},{0,1},{1,0},{-1,1},{1,-1},{-1,0},{0,-1},{-1,-1}};
int SearchOnePath(int m,int n)
{
int i,j,k,ni,nj,v;
for(i=0;i<m;i++)
for(j=0;j<n;j++)mark[i][j]=0 ;
top=0;mark[0][0]=1;
stack[0].i=0;
stack[0].j=0;
while(top>=0)
{
i=stack[top].i;j=stack[top].j;
for(v=0;v<8;v++)
{
ni=i+move[v][0];nj=j+move[v][1];
if(ni>=0&&ni<m&&nj>=0&&nj<n&&mark[ni][nj]==0&&maze[ni][nj]=='0')break;
}
if(v<8)
{
mark[ni][nj]=1;++top;
stack[top].i=ni;stack[top].j=nj;
if(ni==m-1 && nj==n-1)
{puts("");
for(k=0;k<=top;k++)
{
v=k%52;
if(v<26) maze[stack[k].i][stack[k].j]='a'+v;
else maze[stack[k].i][stack[k].j]='A'+v;

printf("->(%d,%d)",stack[k].i,stack[k].j);
if((k+1)%8==0)putchar('\n');
}
putchar('\n');
return 1;
}
}
else--top;
}
return 0;
}
void create(int m,int n)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<=n;j++)
if(rand()%3)maze[i][j]='0';
else maze[i][j]='1';
maze[0][0]='0';maze[m-1][n-n]='0';
}
void show(int m,int n)
{

int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%c",maze[i][j]);
printf("\n");
}
}
void main() {

int m,n;
srand((unsigned)time(NULL));
m=rand()%(M-2)+2;
n=rand()%(N-2)+2;
create(m,n);
puts("迷宫");
show(m,n);
if(SearchOnePath(m,n))show(m,n);
else puts("找不到任何路径");
}
cclientdlg= 客户端对话框界面, 
cclientsocket客户端网络套接,
cchatsocket聊天网络套接,
cclientapp客户端应用程序,
clogindlg登录对话框界面,
cserverapp服务端应用程序
cmainframe主框架
cserverdoc服务端文档(VC自动生成的)
cserverview服务端预览(VC自动生成的)
clistensocket服务端监听
cdatasocket服务端数据套接
cserverInfodig服务端消息界面
caboutdlg关于界面

上一个:VC++登录与注册界面设计
下一个:请问如何自学VC++??

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,