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 ...
随机推荐
- 用生产者消费模型爬取智联招聘python岗位信息
爬取python岗位智联招聘 这里爬取北京地区岗位招聘python岗位,并存入EXECEL文件内,代码如下: import json import xlwt import requests from ...
- 【UVA - 10815】Andy's First Dictionary (set)
Andy's First Dictionary Description 不提英文了 直接上中文大意吧 XY学长刚刚立下了再不过CET就直播xx的flag,为了不真的开启直播模式,XY学长决定好好学习英 ...
- 【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
- djangoForm组件
https://www.cnblogs.com/jabbok/p/9273786.html 在之前学习了html form信息传递到django,然后进行处理,但是这很不方便. django有自己的组 ...
- Tinghua Data Mining 5
ID3 ID3算法倾向于分的很细的变量 C4.5加入分母为惩罚量
- Codeforces 1139E(二分图最大匹配)
pi只有0-5000且只找最小的没出现的,又要找不同club的,考虑二分匹配,左边pi,右边ci,一个匹配一个.离线倒着加边即可. const int maxn = 5e3 + 5; int m, n ...
- 111 Minimum Depth of Binary Tree 二叉树的最小深度
给定一个二叉树,找出其最小深度.最小深度是从根节点到最近叶节点的最短路径的节点数量.详见:https://leetcode.com/problems/minimum-depth-of-binary-t ...
- python学习之调试 错误捕捉及处理
1 捕捉错误:try except Err_Case1: pass except Err_Case2: pass else: 正常情况: finally: 无论是否异常都要 处理的代码 w ...
- Spark Mllib里如何将trainDara训练数据文件里第一行是字段名不是数据给删除掉(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集
- 持续集成~Jenkins里的NuGet和MSBuild插件
Jenkins是一个持续集成的环境,它是java开发的,大叔认为它的工作流程是 从源代码拉一个项目下来到它本地(可以配置定时机制) 恢复相关程序包nuget 编译程序 发布程序 现在说一下在配置jen ...