下载到一半就没有了,里面提到的c盘,但我下载的时候没有用到c盘啊?这里是怎么回事?
1条回答 默认 最新
关注 - 你可以看下这个问题的回答https://ask.csdn.net/questions/1101182
- 你也可以参考下这篇文章:有关C语言在控制台输出时的左对齐右对齐
- 除此之外, 这篇博客: 迷宫问题c程序中的 下面是我写的程序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
大体思路是利用深度优先搜索算法,搜索出口。遇到钥匙,就拿钥匙,从钥匙开始重新搜索出口。
#include <stdio.h> char maze[50][50]; int fx[] = { 1, -1, 0, 0 }; int fy[] = { 0, 0, -1, 1 }; int p; /*门的数量 */ int xzb[20] = { 0 }; int yzb[20] = { 0 }; int len; /*有效搜索路径的长度 */ int key[10] = { 0 }; /*存储已获得的钥匙 */ int IsGetkey(char n); int IsKey(char n); int check(char maze[50][50], int n, int m, int i, int j); int search(char maze[50][50], char exit,int n, int m, int i, int j, int pi, int pj); int main(void) { int i, j; int n, m; int ei, ej; /*搜索入口 */ if (freopen("maze.in", "r", stdin) == NULL) return -1; scanf("%d%d", &n, &m); scanf("%d", &p); for (i = 0; i < n; i++) for (j = 0; j < m; j++) { scanf("%c", &maze[i][j]); if (maze[i][j] == '\n') scanf("%c", &maze[i][j]); } for (i = 0; i < n + 1; i++) { for (j = 0; j < m; j++) { printf("%c", maze[i][j]); } printf("\n"); } close(stdin); for (i = 0; i < n + 1; i++) for (j = 0; j < m; j++) if (maze[i][j] == '$') { ei = i; ej = j; i = 100; j = 100; } search(maze, '&', n, m, ei, ej, -1, -1); } /*搜索*/ int search(char maze[50][50], char exit,int n, int m, int i, int j, int pi, int pj) { char tmp; int k, ni, nj; /*ni,nj表示下一个搜索点的坐标 */ if (maze[i][j] == exit) { printf("到迷宫出口需要%d步\n",len); printf("出口坐标:<%d,%d>\n\n", i, j); for (k = 0; k < len; k++) printf("<%d,%d>\n", xzb[k], yzb[k]); return 1; } else if (IsKey(maze[i][j])) { tmp = maze[i][j]; maze[i][j] = '.'; search(maze, '&',n, m, i, j, -1, -1); } for (k = 0; k < 4; k++) { ni = i + fx[k]; nj = j + fy[k]; if (ni == pi && nj == pj) continue; if (check(maze, n, m, ni, nj)) { xzb[len] = i; yzb[len] = j; len += 1; if (search(maze, '&',n, m, ni, nj, i, j) == 1) return 1; } } len -= 1; return -1;} /*检查下一个搜索点是否有效*/ int check(char maze[50][50], int n, int m, int i, int j) { int flag = 1; if (i < 0 || i >= n || j < 0 || j >= m) flag = 0; else if (maze[i][j] >= 'A' && maze[i][j] <= 'Z' && IsGetkey(maze[i][j])) ; else if (maze[i][j] != '.' && maze[i][j] != '&' && maze[i][j] < 'a') flag = 0; return flag; } /*IsKey 判断当前搜索点是不是钥匙,是返回1 * 否返回 0 * */ int IsKey(char n) { if (n >= 'a' && n <= 'a' + p - 1) { key[n - 'a'] += 1; return 1; } else return 0; } /*如果当前搜索点是门,判断当前有没有该门钥匙 * */ int IsGetkey(char n) { if (key[n - 65] == 1 || n >= 'a') { key[n - 65] -= 1; /*每个钥匙只有一次使用机会 */ return 1; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 如何实现关闭某一个应用程序后,自动运行一个批处理文件。
- ¥15 关于 S7-PLCSIM Advanced 5.0本地TCP连接无法读写数据
- ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
- ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
- ¥15 druid(相关搜索:数据库|防火墙)
- ¥15 大一python作业
- ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
- ¥60 如何鉴定微信小程序数据被篡改过
- ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
- ¥20 C#上传XML格式数据