算法入门经典第二版 3-5 Puzzle
来源:互联网 发布:幼儿园美工活动室 编辑:程序博客网 时间:2024/06/05 18:47
1.提醒一下自己初始化很重要。
2.因为自己在solve()中使用for(int i = 0; i < strlen(command); i++)
没注意到strlen(command)返回的是最长的命令输入的字符个数而不是当前字符个数导致无法AC
eg:command 接收到 “LLLRRRAAA”的输入 command为 “LLLRRRAAA”(末尾没有\0)
然后 command 接收到 “BBB”的输入后 command为 “BBBRRRAAA”,strlen(command)返回的是一个大于等于9的数(strlen()遇到’\0’才返回),而不是3;
3.自己为solve()添加了一个整型变量 n用于统计字符个数解决了
下面是AC代码
#include <stdio.h>#include <string.h>char command[100000];char a[5][5];int pos[2]; //X:pos[0] Y:pos[1]bool f;void swap(char *a,char *b){ char t = *a; *a = *b; *b = t;}void solve(int n) //原来的错误代码 solve(){ for(int i = 0; i < n; i++) //原来的错误代码 for(int i = 0; i < strlen(commmand);i++) { char c = command[i]; if(c == 'A') { if(pos[1] - 1 >= 0) { swap(&a[pos[1]][pos[0]],&a[pos[1] - 1][pos[0]]); pos[1] -= 1; } else f = false; } else if (c == 'B') { if(pos[1] + 1 <= 4) { swap(&a[pos[1]][pos[0]],&a[pos[1] + 1][pos[0]]); pos[1] += 1; } else f = false; } else if (c == 'L') { if(pos[0] - 1 >= 0) { swap(&a[pos[1]][pos[0]],&a[pos[1]][pos[0] - 1]); pos[0] -= 1; } else f = false; } else if (c == 'R') { if(pos[0] + 1 <= 4) { swap(&a[pos[1]][pos[0]],&a[pos[1]][pos[0] + 1]); pos[0] += 1; } else f = false; } }}int main(){ int kase = 0; while(1) { f = true; for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { a[i][j] = getchar(); if(a[0][0] == 'Z') return 0; if(a[i][j] == ' ') { pos[0] = j; pos[1] = i;} } getchar(); } int n = 0; while(scanf(" %c",&command[n]) == 1) { if(command[n] == '0') break; else n++; } getchar(); //舍弃命令输入中的回车符 solve(n); //原来的错误代码 solve(); if(kase++) printf("\n"); printf("Puzzle #%d:\n",kase); if(f) { for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { if(j) printf(" "); printf("%c",a[i][j]); } printf("\n"); } } else printf("This puzzle has no final configuration.\n"); } return 0;}
阅读全文
0 0
- 算法入门经典第二版 3-5 Puzzle
- 算法竞赛入门经典(第二版) 习题3-5 谜题(Puzzle) UVa227 Finals1993
- 算法竞赛入门经典(第2版)习题3-5 谜题 Puzzle UVa227
- 算法竞赛入门经典(第2版)习题3-5 谜题(Puzzle) Uva227
- 《算法竞赛入门经典2ndEdition 》习题3-5 谜题(Puzzle, Uva227)
- 算法入门经典第二版 3-3 Digit Counting
- 算法竞赛入门经典第二版 2-5 decimal
- 《算法竞赛入门经典 第二版》 Chapter 3
- 算法入门经典第二版 3-1 Score
- 算法入门经典第二版 3-2 Molar Mass
- 算法入门经典第二版 3-4 Periodic Strings
- 算法入门经典第二版 3-9 All in All
- 算法入门经典第二版 3-8 Repeating Decimals
- 算法入门经典第二版 3-7 DNA Consensus String
- 算法竞赛入门经典第二版 第二章
- 算法竞赛入门经典(第二版)-刘汝佳-第三章-例题3-5生成元
- 算法竞赛入门经典(第二版)-刘汝佳-第三章-例题3-5 环状序列
- 算法竞赛入门经典 第二版 习题5-3 卡片游戏 Throwing cards away I uva10935
- Gson的@SerializedName和@Expose注解
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 4.对象的组合
- HDOJ1029 Ignatius and the Princess IV
- windows下端口号查看
- 共享栈
- 算法入门经典第二版 3-5 Puzzle
- 手动安装opencc(中文简繁体转换插件) ——解决安装opencc时出现HTTP 403错误的问题
- 《kubernetes-1.8.0》11-addon-Harbor
- 自定义View基础(二)—— 理解Window和WindowManger
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 5.基础构建模块
- python中defaultdict方法的使用
- Add Binary(LeetCode)
- C++ 类,构造函数,析构函数
- 项目中常用的19条MySQL优化