posts - 7, comments - 13, trackbacks - 0, articles - 37
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

[导入]PKU3295永真式判断

Posted on 2008-10-16 15:15 岁月流逝 阅读(376) 评论(0)  编辑 收藏 引用
给你一系列BOOL变量和运算操作符,判断输入的式子是不是永真式!
这题一共只有5个变量,这样的话一共才32种情况用栈模拟下二元运算,做些处理就可以了!
#include "stdio.h"
bool isop(char c)
{
  if(c=='K'||c=='A'||c=='C'||c=='E')
    return true;
  return false;
}
int main()
{
  char s[101];
  int num[1000];
  int i,j;
  int mystack[10000];
  int myindex;
  while(gets(s))
  {
    if(s[0]=='0')
      break;
    for(i = 0;i<32;i++)
    {
      num['p'] =(i>>0)&1;
      num['q'] =(i>>1)&1;
      num['r'] =(i>>2)&1;
      num['s'] =(i>>3)&1;
      num['t'] =(i>>4)&1;
      myindex = 0;
      for(j = 0;s[j]!='\0';j++)
      {
        if(isop(s[j])&#124;&#124;s[j]=='N')
        {
          mystack[myindex] = s[j];
          myindex++;
        }
        else
        {
          mystack[myindex] = num[s[j]]+'0';
          mystack[myindex+1] = 0;
          if(isop(mystack[myindex-1]))
          {
            myindex++;
            continue;
          }
          while(myindex>=1&&!isop(mystack[myindex-1]))
          {
            if(mystack[myindex-1]=='N')
            {
              mystack[myindex-1]=1-(mystack[myindex]-'0')+'0';
              mystack[myindex]=0;
              myindex--;
            }
            else
            {
              if(mystack[myindex - 2] == 'A')
                mystack[myindex - 2] = ((mystack[myindex - 1] - '0') &#124; (mystack[myindex] - '0')) + '0';
              else if(mystack[myindex - 2]  == 'K')
                mystack[myindex - 2] = ((mystack[myindex - 1]- '0') & (mystack[myindex] - '0')) + '0';
              else if(mystack[myindex - 2]== 'C')
                mystack[myindex - 2] = 1 - (((mystack[myindex - 1] - '0') & (1 - (mystack[myindex]  - '0')))) + '0';
              else if(mystack[myindex - 2] == 'E')
                mystack[myindex - 2] = (1 - ((mystack[myindex - 1]- '0') ^ (mystack[myindex]  - '0'))) + '0';
              myindex -= 2;
              mystack[myindex +1] = 0;    
            }
          }
          myindex++;
          
        }
        
      }
      if(mystack[0]=='0')
        break;
    }


Tags - ,
文章来源:http://www.feng5166.com/blog/read.php?121

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理