Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

贴上正确的代码

Posted by yangkeao at 2016-07-31 21:55:57 on Problem 3295
In Reply To:Re:为什么会TLE呢?? Posted by:yangkeao at 2016-07-31 21:37:32
> 
> 逻辑错了┭┮﹏┭┮,然后加上记忆化

#include <cstdio>
using namespace std;
char s[7000];
bool p, q, r, _s, t;
int n,pos;

bool calc() {
  if (s[pos] == 'p') return p;
  else if (s[pos] == 'q') return q;
  else if (s[pos] == 'r') return r;
  else if (s[pos] == 's') return _s;
  else if (s[pos] == 't') return t;
  else if (s[pos] == 'K') {
    pos++;
    bool w = calc();
    pos++;
    bool x = calc();
    return w&x;
  }
  else if (s[pos] == 'A') {
    pos++;
    bool w = calc();
    pos++;
    bool x = calc();
    return w|x;
  }
  else if (s[pos] == 'N') {
    pos++;
    bool w = calc();
    return !w;
  }
  else if (s[pos] == 'C') {
    pos++;
    bool w = calc();
    pos++;
    bool x = calc();
    return (!w) | x;
  }
  else if (s[pos] == 'E') {
    pos++;
    bool w = calc();
    pos++;
    bool x = calc();
    return w == x;
  }
}

int main() {
  scanf("%s", &s);
  while (s[0] != '0') {

    bool k = 1;
    while (s[n]) {
      n++;
    }

    for (int arg = 0; arg < 32; arg++) {
      p = arg & 1;
      q = (arg & 2) / 2;
      r = (arg & 4) / 4;
      _s = (arg & 8) / 8;
      t = (arg & 16) / 16;
      pos = 0;
      if (!calc()) k = 0;
    }
    if (k) printf("tautology\n");
    else printf("not\n");

    for (int i = 0; i < n; i++) {
      s[i] = 0;
    }
    n = 0;

    scanf("%s", &s);
  }
  return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator