第六章部分例题

 

6-4 自己先敲了一遍虽然可以完成书上的功能但是漏洞百出

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 const int maxn=100000+100;
 8 
 9 char txt[maxn];
10 int next[maxn];
11 
12 int main()
13 {    
14     while(scanf("%s",txt+1)==1)
15     {    
16         int len=strlen(txt)-1;
17         int start=1;
18 
19         for(int i=0;i<=len;i++)
20         {
21             next[i]=i+1;
22         }
23 
24         for(int i=1;i<=len;i++)
25             if(txt[i]!='[' && txt[i]!=']')
26             {
27                 start=i;
28                 break;
29             }
30 
31         int pre;
32         int behind;
33 
34         for(int i=1;i<=len;i++)
35         {
36             if(txt[i]=='[')
37             {
38                 pre=i-1;
39                 next[0]=i;
40             }
41 
42             if(txt[i]==']')
43             {
44                 next[i]=start;
45                 behind=i+1;
46             }
47         }
48 
49         next[pre]=behind;
50 
51 
52         for(int i=next[0];i!=0;i=next[i])
53         {
54             if(txt[i]!='[' && txt[i]!=']')
55                 printf("%c",txt[i]);
56         }
57 
58         printf("\n");
59 
60     }
61 
62 }
View Code

 

书上的过程就是模仿光标的过程

 1 const int maxn=100000+100;
 2 
 3 char txt[maxn];
 4 int next[maxn];
 5 
 6 
 7 
 8 int main()
 9 {
10     
11 
12     while(scanf("%s",txt+1)==1)
13     {
14 
15         memset(next,0,sizeof(next));              //必要,为了清空next数组,防止上一次的影响
16 
17         int len=strlen(txt+1);
18 
19         int cur=0;
20         int last=0;
21 
22         for(int i=1;i<=len;i++)
23         {
24             if(txt[i]=='[')
25                 cur=0;
26             else if(txt[i]==']')
27                 cur=last;
28             else
29             {
30                 next[i]=next[cur];
31                 next[cur]=i;
32 
33                 if(cur==last) last=i;
34 
35                 cur=i;
36             }
37         }
38 
39         for(int i=next[0];i!=0;i=next[i])
40             printf("%c",txt[i]);
41 
42         printf("\n");
43     }
44 
45     return 0;
46 }

 

做了这一题之后略有感悟,第一是  核心代码22行到37行这样写并不是巧合,我认为代码这样写出来是巧合是因为自己的理解还不够

第二  对比我之前的写的代码,书上的代码是根据模仿光标的思路来写的,这样才是题意,比我自己瞎想的方法不知道高到哪里去了.

转载于:https://www.cnblogs.com/tclan126/p/7236859.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值