UVa-227-谜题
这题的话,我们读入的时候,可以用scanf单个读入字符,也可以用getchar函数来读入。
scanf
scanf读入串字符的时候,遇到空格、回车和TAB等空白字符就会停止读入,但是如果读入单个字符就不会出现读入结束的情况,因为,我们就是用scanf函数来读入单个字符的,读入结果很理想。
getchar
如果是getchar的话,getchar本身就是读入字符,所以遇到回车和空格并没有什么问题。
注意
- 操作可以是多行的,所以注意对换行的处理
- 操作字符串里面读入至零之后,后面的回车要用getchar吸收,不然就作为下一组的第一个数据被读入了
- 对于操作我们一定要把所有的都读完,不能因为越界,就输出,然后中断读入,我们可以设置标记为否,然后一直读入,读完不做操作就行了
- getchar的速度快于scanf的速度
- PE问题,每个谜题的输入之间要有一个空行,第一行之前不要
getchar()版
#include <stdio.h>
char puzz[7][7];
int main()
{
int br,bc,er,ec,flag,cnt=1;
char ch;
while ((puzz[0][0]=getchar())!=EOF&&puzz[0][0]!='Z') {
for (int i=0;i<5;i++) {
for (int j=0;j<6;j++) {
if (i||j) puzz[i][j]=getchar();
if (puzz[i][j]==' ') {
br=i;er=i;
bc=j;ec=j;
}
}
}
flag=1;
while ((ch=getchar())!=EOF&&ch!='0') {
if (ch=='\n') continue;
if (flag==1) {
switch (ch) {
case 'A':
er--;
break;
case 'B':
er++;
break;
case 'L':
ec--;
break;
case 'R':
ec++;
break;
default:
flag=0;
break;
}
if (flag==0||er<0||er>4||ec<0||ec>4) {
flag=0;
continue;
}
puzz[br][bc]=puzz[er][ec];
puzz[er][ec]=' ';
br=er;
bc=ec;
}
}
getchar();
if (cnt!=1) {
printf("\n");
}
printf("Puzzle #%d:\n",cnt++);
if (flag==1) {
for (int i=0;i<5;i++) {
for (int j=0;j<6;j++) {
printf("%c",puzz[i][j]);
if (j<4) printf(" ");
}
}
}
else printf("This puzzle has no final configuration.\n");
}
return 0;
}
scanf()版
#include <stdio.h>
char puzz[7][7];
int main()
{
int br,bc,er,ec,flag,cnt=1;
char ch;
while (scanf("%c",&puzz[0][0])&&puzz[0][0]!='Z') {
for (int i=0;i<5;i++) {
for (int j=0;j<6;j++) {
if (i||j) scanf("%c",&puzz[i][j]);
if (puzz[i][j]==' ') {
br=i;er=i;
bc=j;ec=j;
}
}
}
// for (int i=0;i<5;i++) {
// for (int j=0;j<6;j++) {
// printf("%c",puzz[i][j]);
// }
// }
flag=1;
while (scanf("%c",&ch)&&ch!='0') {
if (ch=='\n') continue;
if (flag==1) {
switch (ch) {
case 'A':
er--;
break;
case 'B':
er++;
break;
case 'L':
ec--;
break;
case 'R':
ec++;
break;
default:
flag=0;
break;
}
if (flag==0||er<0||er>4||ec<0||ec>4) {
flag=0;
continue;
}
puzz[br][bc]=puzz[er][ec];
puzz[er][ec]=' ';
br=er;
bc=ec;
}
}
getchar();
if (cnt!=1) {
printf("\n");
}
printf("Puzzle #%d:\n",cnt++);
if (flag==1) {
for (int i=0;i<5;i++) {
for (int j=0;j<6;j++) {
printf("%c",puzz[i][j]);
if (j<4) printf(" ");
}
}
}
else printf("This puzzle has no final configuration.\n");
}
return 0;
}
UVa-227-谜题的更多相关文章
- UVA 227 Puzzle(基础字符串处理)
题目链接: https://cn.vjudge.net/problem/UVA-227 /* 问题 输入一个5*5的方格,其中有一些字母填充,还有一个空白位置,输入一连串 的指令,如果指令合法,能够得 ...
- uva 227 Puzzle
Puzzle A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained ...
- UVA 227 Puzzle - 输入输出
题目: acm.hust.edu.cn/vjudge/roblem/viewProblem.action?id=19191 这道题本身难度不大,但输入输出时需要特别小心,一不留神就会出问题. 对于输入 ...
- UVA 227 周期串
题意: 给一个字符串,寻找最短的循环节 如abcabcabcabc以3为周期,也按6和12为周期. 分析: 因为循环节肯定是相等的,所以枚举串长度的所有约数的循环节再判断是否相等即可. 我的方法是枚举 ...
- uva 227 Puzzle (UVA - 227)
感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...
- Puzzle UVA - 227 PE代码求大佬指点
A children's puzzle that was popular 30 years ago consisted of a 5×5 frame which contained 24 smal ...
- UVa 11549 计算器谜题(Floyd判圈算法)
https://vjudge.net/problem/UVA-11549 题意: 有一个老式计算器,只能显示n位数字,输入一个整数k,然后反复平方,如果溢出的话,计算器会显示结果的最高n位.如果一直这 ...
- UVa 10012 - How Big Is It? 堆球问题 全排列+坐标模拟 数据
题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_per ...
- Fast Matrix Operations(UVA)11992
UVA 11992 - Fast Matrix Operations 给定一个r*c(r<=20,r*c<=1e6)的矩阵,其元素都是0,现在对其子矩阵进行操作. 1 x1 y1 x2 y ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
随机推荐
- 类的property特性
目录 什么是 property特性 简单示例 property属性的两种方式 装饰器 类属性方式 property+类的封装 应用 私有属性添加getter和setter方法 使用property升级 ...
- mysql驱动包下载
- time库的使用
首先只需要 import time (典型的,标准的python库的使用方法) 主要包括三类函数 ——时间获取:time() , ctime() , gmtime() ——时间格式化: strftim ...
- win10子系统linux编译ffmpeg
android-ndk-r14b(linux版) ffmpeg-4.0 开启win10子系统(控制面板->程序和功能->启用或关闭Windows功能 然后在 适用与 Linux 的 Win ...
- PostgreSQL-6-数据分组
基本语法 SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2 HAVING [ cond ...
- POP页面暂时不销毁
摘要:我们经常使用的QQ空间,当我们短时间内两次进入页面的时候,页面是没有重新创建的,不光是缓存的数据,是整个页面都没有变.我们在开发中可能也会有这样的需求.开始的时候,想的思路是这样的:用定时器,将 ...
- HackerRank Super Six Substrings dp
https://www.hackerrank.com/contests/hourrank-18/challenges/super-six-substrings 能被6整除的数有一个特点,就是能同时被3 ...
- linux分配文件文件夹所属用户及组
ls -l 可以查看当前目录文件.如:drwxr-xr-x 2 nsf users 1024 12-10 17:37 下载文件备份分别对应的是:文件属性 连接数 文件拥有者 所属群组 文件大小 文件修 ...
- centos7 更换jdk版本
查看java版本 java -version 如果有java版本(如果没有直接看红色虚线以下的) 输入 rpm -qa | grep java会显示以下几条内容: ******* ******** ...
- 《javascript设计模式》笔记之第六章:方法的链式调用
这一章要实现的就是jQuery的那种链式调用,例子: $(this).setStyle('color', 'green').show(); 一:调用链的结构: 首先我们来看一下最简单的$()函数的实现 ...