中易网

c语言编程的, 能答的进

答案:3  悬赏:20  
解决时间 2021-03-21 06:08
编写程序,生成一种贯穿10 * 10字符数组(初始时全为字符'.')的“随机步法”。程序必须随机地从一个元素“走到”另一个元素。每次都是向下,向上,向左或向右移动一个元素位置。已访问过的元素按访问顺序用字母A到Z进行标记。
注意: 不能走到数组外面,不能走到已有字母标记的位置。只要有一个条件不满足,就得尝试换一个方向移动。如果4个方向都堵住了,程序就必须终止了。
利用数组和循环, 堆栈还没有学。最好是给个程序,没有的话,把算法说一下也可以
最佳答案
编译环境:VC++6.0,文件名:xxx.cpp
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>
#include <time.h>
void main()
{
bool df[4];
int dmove[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
bool spcBreak = false;
srand(time(NULL));
char map[10][10];
int i,j;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
map[i][j] = '.';
}
}
int cx=rand()%10;
int cy=rand()%10;
char mark = 'A';
while (mark<='Z' && !spcBreak)
{
map[cx][cy] = mark;
mark++;
memset(df,0,sizeof(df));
if (cx==0)
{
df[1] = true;
}
if (cy==0)
{
df[3] = true;
}
if (cx==9)
{
df[0] = true;
}
if (cy==9)
{
df[2] = true;
}
while (1)
{
for (i=0;i<4 && df[i];i++);
if (i==4)
{
spcBreak = true;
break;
}
int dirction = rand()%4;
while (df[dirction])
dirction = rand()%4;
if (map[cx+dmove[dirction][0]][cy+dmove[dirction][1]]!='.')
{
df[dirction] = true;
}
else
{
cx = cx+dmove[dirction][0];
cy = cy+dmove[dirction][1];
break;
}
}
}
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
putwchar(map[i][j]);
putwchar(' ');
}
putwchar('\n');
}
}
全部回答
寻路程序嘛。。。 利用堆栈可以完成
编译环境:VC++6.0,文件名:xxx.cpp #include <stdio.h> #include <memory.h> #include <stdlib.h> #include <time.h> void main() { bool df[4]; int dmove[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; bool spcBreak = false; srand(time(NULL)); char map[10][10]; int i,j; for (i=0;i<10;i++) { for (j=0;j<10;j++) { map[i][j] = '.'; } } int cx=rand()%10; int cy=rand()%10; char mark = 'A'; while (mark<='Z' && !spcBreak) { map[cx][cy] = mark; mark++; memset(df,0,sizeof(df)); if (cx==0) { df[1] = true; } if (cy==0) { df[3] = true; } if (cx==9) { df[0] = true; } if (cy==9) { df[2] = true; } while (1) { for (i=0;i<4 && df[i];i++); if (i==4) { spcBreak = true; break; } int dirction = rand()%4; while (df[dirction]) dirction = rand()%4; if (map[cx+dmove[dirction][0]][cy+dmove[dirction][1]]!='.') { df[dirction] = true; } else { cx = cx+dmove[dirction][0]; cy = cy+dmove[dirction][1]; break; } } } for (i=0;i<10;i++) { for (j=0;j<10;j++) { putwchar(map[i][j]); putwchar(' '); } putwchar('\n'); } }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我说我要你的心,她发了两颗爱心,给。 我怎
网站上线,怎么做软文推广?
有谁知道昆明火车站到昆明长水机场需要多久啊
武汉市汉南区全民创业服务指导中心这个地址在
戴尔笔记本广州售后在哪里,岗顶有吗?
有土地证,建房子北面方向卫生间开一扇窗户为
佛山禅城区宠物商店,不是要买宠物的地方,而
销售会议上的经理致辞
电脑没有office文件会怎样
冠农股份600251后市如何操作
oppoa59t移动4G版只能用移动4G吗
六年级下册语文新课堂18课广玉兰小练笔怎么写
华硕跟映泰主板哪个好啊
MFC中如何在一个按钮中循环一个事件,在点击
德武跆拳道俱乐部(方庄璞瑅馆)地址有知道的么
推荐资讯
皇家俏咪咪精油的评价
qq飞车 这种板车怎么得
有什么歌曲是由小说改过来的
投诉天津出租车,太可恶了
2011年全国中小学生田径运动会什么时候召开
血沉54应该怎么办
竹炭店,开竹炭店赚钱么
变频器显示代码E.Lu.5是什么故障
现在怎么小说网站都打不开了?
甘肃哪些地区要支教的小学老师
每天跑完步按摩,小腿还会长肌肉吗
急急急!!!我买一套二手房,还没过户;因卖
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?