[解题报告]Marvelous Mazes

题目大意

题目原文:http://uva.onlinejudge.org/external/4/445.pdf

背景

题目很简单就是制作一个迷宫,后面字符出现的次数会等于前面出现数字之和,'b'会被空格代替,'!'则是'\n'代替,'*'则不改变。

 

Sample Input

1T1b5T!1T2b1T1b2T!1T1b1T2b2T!1T3b1T1b1T!3T3b1T!1T3b1T1b1T!5T1*1T

11X21b1X
4X1b1X

 

Sample Output

T TTTTT
T  T TT
T T  TT
T   T T
TTT   T
T   T T
TTTTT*T

XX   X
XXXX X

算法:

一定要注意的是输入一行,这一行的迷宫就会被输出,而不是等所有的都输入完成才出现迷宫,我一开始就纠结在这里很久。还有这道题也许有人和我一样一看到一大串的字符串就想到用字符串来解决问题,但是将一个个字符拆解下来解决也许会好得多,所以充分利用输入的缓冲区的作用,一个个字符进行读取,并且读取一个输出一个结果,还有这道题让我明白要充分利用c环境中已经有得函数,这样可以提高代码的效率。

代码:这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确,

 1 #include<stdio.h>
 2 #include<ctype.h>
 3 int main(void)
 4 {
 5     char ch;
 6     int count=0,i=0;
 7 
 8     while(scanf("%c",&ch)!=EOF)
 9     {
10         if(isdigit(ch))
11         {
12             count += ch - '0';
13             continue;
14         }
15         else if(isupper(ch)||ch=='b'||ch=='*')
16         {
17             for(i=0;i <count;i++)
18             {
19                 if(ch=='b')
20                 printf(" ");
21                 else
22                 printf("%c",ch);
23             }
24             count=0;
25         }
26         if(ch=='!'||ch=='\n')
27         printf("\n");
28      }
29     return 0;
30 }

 

转载于:https://www.cnblogs.com/qisong178878915/archive/2013/02/16/2913784.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值