网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月06日漏签0天
c语言吧 关注:798,948贴子:4,358,149
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回c语言吧
>0< 加载中...

请大虾们帮忙把这个迷宫的C++代码改为C语言

  • 只看楼主
  • 收藏

  • 回复
  • 梦月光之颜
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个程序代码分了三个文件,我想把它揉合为一个C语言文件
可是面向对象类不知道怎么改成C语言

//maze.h文件
// Maze类的声明
#ifndef MAZE_H_
#define MAZE_H_

#include<iostream>
#include<string>
#include<vector>

using namespace std;

class Maze
{
public:
Maze();               // 构造函数
void solve();   // 迷宫求解函数
private:
vector<string> cells; 
          // 用于存储迷宫的各处状态
int rows, columns;  
          // 迷宫的行数、列数
bool exitMaze( int row, int column);
          // 从位置(row,column)出发,穿越迷宫,成功返回true
bool valid( int row, int column);
          // 用于判断位置(row,column)是否可通行,是返回true
};
#endif


//maze.cpp文件
// Maze 类的定义
#include "Maze.h" 

// 构造函数,对迷宫的状态进行初始化
Maze::Maze()
{
cout << "请输入迷宫阵列,1代表通路,0代表障碍,每输入一行用回车表确认"<< endl; 
    cout << "输入完成后请输入'ok'以表示之 " << endl;
// 读入迷宫的状态
string cellstr;
cin >> cellstr;
while (cellstr != "ok")
{
cells.push_back(cellstr);
columns = cellstr.size();
   // 迷宫阵的总列数
cin >> cellstr;
}
rows = cells.size();
  // 迷宫阵的总行数
}

// 迷宫求解函数
void Maze::solve()
{
int row, column;
row = column = 0;
   // 设置出发点为(0,0)位置
bool done = exitMaze( row, column);
// 穿越成功,显示穿越路径,否则报道迷宫无法穿越
if (done)
{
cout << "恭喜!成功穿过迷宫!穿越路径为:" << endl;
for (int i = 0; i < rows; ++i )
{
for (int j = 0; j < columns; ++j)
cout << cells[i][j];
cout << endl;
}// end for
}// end if
else
cout << "对不起,此迷宫无法穿越" << endl;
}

// 从位置(row,column)出发,穿越迷宫,成功返回true
bool Maze::exitMaze( int row, int column)
{
bool done = false;
// 如果位置(row,column)可通行,标记之,并依次向四周搜索着前进
if ( valid(row, column) )
{
// 走过的位置标记为'B'
        cells[row][column] = 'B'; 
// 抵达终点时表示穿越完成
if ( row == (rows - 1) && column == (columns - 1) )
done = true;
else
{
// 未到达终点前,首先选择向右走
done = exitMaze ( row , column + 1);
            // 右走失败,转向下走
if (!done)
done = exitMaze ( row + 1, column);
// 右走、下走失败,转向左走
            if (!done) 
done = exitMaze ( row, column - 1);
// 右走、下走、左走均失败,转向上走
            if (!done)
done = exitMaze ( row - 1, column);
}
if (done)
cells[row][column] = 'P'; 
              // 正确的路径标记为'P'
}
return(done);
}

// 判断位置(row,column)是否可通行,是则返回true
bool Maze::valid( int row, int column)
{
bool path = false;
// 如果位置(row,column)在迷宫内,且该处可通行
if ( row >= 0 && row < rows && column >= 0 
&& column < columns && cells[row][column] == '1' )
path = true;
return path;
}

//maze_main.cpp文件
// 迷宫模拟Maze类的测试函数
#include "Maze.h"

int main()
{
cout << "****************欢迎使用迷宫模拟程序*************" << endl;;
Maze MazeExc;
MazeExc.solve();
system("pause"); 
return 0;
}


  • 梦月光之颜
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
都米人看呢,伤心..自己顶一


2025-08-06 23:26:09
广告
不感兴趣
开通SVIP免广告
  • 218.87.100.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我来顶下
不过我也不知道
呵呵


  • 222.90.73.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我需要你需要的答案
来顶


  • iway
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我需要你需要的答案 
来顶


  • 220.160.123.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
hao dong xi


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示