2021年度训练联盟热身训练赛第三场

A  Circuit Math

模拟数字电路

思路:

用栈,把A B C D 等字母压入栈中,如果对应的是 T 那么压入的就是 1 ,对应 F 就压入 0 。遇到 + 或 * 时,从栈中弹出两个字母,做 && 或 || 运算,做完运算再压入栈中,遇到 - 时,就只弹出一个字母,做非运算,最后看栈顶元素。

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <algorithm>
 6 #include <cmath>
 7 #include <map>
 8 #include <stack>
 9 
10 using namespace std;
11 
12 int num[30];
13 stack<int>stk;
14 
15 int main()
16 {
17     int n, x = 0;
18     cin >> n;
19     getchar();
20     string s1;
21     getline(cin, s1);
22     for (int i = 0; i < s1.length(); i++) 
23     {
24         if (s1[i] == ' ')
25             continue;
26         else {
27             if (s1[i] == 'T')
28                 num[x++] = 1;
29             if (s1[i] == 'F')
30                 num[x++] = 0;
31         }
32     }
33     string s;
34     getline(cin, s);
35 
36     for (int i = 0; i < s.length(); i++)
37     {
38         if (s[i] == ' ')
39             continue;
40 
41         if (s[i] >= 'A' && s[i] <= 'Z')
42         {
43             stk.push(num[s[i] - 'A']);
44         }
45         else
46         {
47             if (s[i] == '-')
48             {
49                 int temp = stk.top();
50                 stk.pop();
51 
52                 if (temp == 1)
53                     temp = 0;
54 
55                 else
56                     temp = 1;
57 
58                 stk.push(temp);
59             }
60             else {
61                 int temp1, temp2, temp;
62                 temp1 = stk.top();
63                 stk.pop();
64                 temp2 = stk.top();
65                 stk.pop();
66                 if (s[i] == '*')
67                     temp = temp1 && temp2;
68 
69                 if (s[i] == '+')
70                     temp = temp1 || temp2;
71 
72                 stk.push(temp);
73 
74             }
75         }
76     }
77 
78     if (stk.top())
79         cout << "T" << endl;
80     else
81         cout << "F" << endl;
82 
83     return 0;
84 
85 }

 

posted @ 2021-03-21 20:16  彦辰kkkkk  阅读(67)  评论(0)    收藏  举报