递归下降 方法 1126 3295

http://acm.pku.edu.cn/JudgeOnline/problem?id=1126

http://acm.pku.edu.cn/JudgeOnline/problem?id=3295

两道题目很相似,都是对一个字符串进行分析,并得出结果,核心思想使用递归下降的方法

code 1126

  1. #include<iostream>
  2. #include<string>
  3. usingnamespacestd;
  4. intj(0);
  5. stringtemp;
  6. intcheck();
  7. intmain()
  8. {
  9. freopen("in.txt","r",stdin);
  10. intf;
  11. while(cin>>temp)
  12. {
  13. f=check();
  14. if(j<temp.size())//如果调用完后,j<temp.size()那么就为错
  15. f=0;
  16. j=0;
  17. if(f)
  18. cout<<"YES"<<endl;
  19. else
  20. cout<<"NO"<<endl;
  21. }
  22. return0;
  23. }
  24. intcheck()
  25. {
  26. intch=temp[j++];
  27. switch(ch)
  28. {
  29. case'p':case'q':case'r':case's':case't':case'u':case'v':case'w':case'x':case'y':case'z':return1;break;
  30. case'I':case'E':case'D':case'C':returncheck()&check();break;
  31. case'N':returncheck();break;
  32. default:return0;
  33. }
  34. }

code 3295

  1. #include<iostream>
  2. usingnamespacestd;
  3. intcheck();
  4. intj(0);
  5. chartemp[201];
  6. shortv[200]={0};
  7. intmain()
  8. {
  9. freopen("in.txt","r",stdin);
  10. intp,q,r,s,t,f(1);
  11. while(cin>>temp&&temp[0]!='0')
  12. {
  13. f=1;
  14. j=0;
  15. //对32 种情况的枚举
  16. for(p=0;p<=1&&f;p++)
  17. for(q=0;q<=1&&f;q++)
  18. for(r=0;r<=1&&f;r++)
  19. for(s=0;s<=1&&f;s++)
  20. for(t=0;t<=1&&f;t++)
  21. {
  22. v['p'-'0']=p;
  23. v['q'-'0']=q;
  24. v['r'-'0']=r;
  25. v['s'-'0']=s;
  26. v['t'-'0']=t;
  27. j=0;
  28. f=check();
  29. if(f==0)
  30. {
  31. cout<<"not"<<endl;
  32. break;
  33. }
  34. }
  35. if(f)
  36. cout<<"tautology"<<endl;
  37. }
  38. return0;
  39. }
  40. intcheck(){
  41. intch=temp[j++];
  42. switch(ch){
  43. case'p':case'q':case'r':case's':case't':returnv[ch-'0'];break;
  44. case'K':returncheck()&check();break;
  45. case'A':returncheck()|check();break;
  46. case'N':return!check();break;
  47. case'C':return!check()|check();break;
  48. case'E':return!check()^check();break;
  49. }
  50. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值