sscanf神器不管用了?!全TLE求助!

P1597 语句解析

看来为了做出这道题,我不得不抛弃我刚学会的```sscanf```神器,呜呜(ToT)。
by justinjia @ 2020-12-13 08:57:05


@[justinjia](/user/373226) ```cpp for(int i=1;sscanf(code,"%c:=%c;",&t1,&t2);i++){ code[(i-1)*5+1]=' '; code[(i-1)*5+2]=' '; code[(i-1)*5+3]=' '; code[(i-1)*5+4]=' '; code[i*5]=' '; ``` 改成 ```cpp for(int i=1;sscanf(code+5*(i-1),"%c:=%c;",&t1,&t2)==2;i++){ ```
by Spasmodic @ 2020-12-13 09:24:19


@[justinjia](/user/373226) 您不测样例的吗……
by Spasmodic @ 2020-12-13 09:24:50


@[happydef](/user/121027) ```cpp code+5*(i-1) ``` 这是字符数组,不是```string```。 ~~(我这验证码还挺好的,上来就rp\[可惜没有++\])~~
by justinjia @ 2020-12-13 09:28:02


@[justinjia](/user/373226) ???????string 才不能这么干的好吧
by Spasmodic @ 2020-12-13 09:28:51


@[justinjia](/user/373226) 你的错误之处在于,sscanf是从第一个开始扫的,你这样除第一次外根本读不了
by Spasmodic @ 2020-12-13 09:31:38


@[happydef](/user/121027) 可是我这样会把第一个语句用空格覆盖掉的啊? 我想象中的流程(以样例输入为例): 1. 执行第一次循环时,```code```由```a:=3;b:=4;c:=5;```变成了``` b:=4;c:=5;```(应该还有$5$个空格,但是这里打不出来),```a```被赋值为$3$。 2. 执行第二次循环时,```code```由``` b:=4;c:=5;```变成了``` c:=5;```,```b```被赋值为$4$。 3. 执行第三次循环时,```code```由``` c:=5;```变成了``` ```,```c```被赋值为$5$。 4. 此时无法读取到新的```%c:=%c;```,所以退出循环。
by justinjia @ 2020-12-13 09:42:40


@[happydef](/user/121027) > string 才不能这么干的 ```string```中```+```的意思是连接,比如 ```cpp string a="luo"; a+="gu"; cout<<a; ``` 输出结果为```luogu```。
by justinjia @ 2020-12-13 09:45:01


@[justinjia](/user/373226) /yun a+1 表示 &a[1]
by Spasmodic @ 2020-12-13 09:46:57


@[justinjia](/user/373226) 大爷char数组是从0开始的 ~~你绿勾哪来的~~
by Spasmodic @ 2020-12-13 09:47:31


| 下一页