3500N DAG優化(編譯原理)

2022-07-08 17:18:22 字數 1208 閱讀 3379

大家都學過了**優化,其中有乙個dag優化,這次我們就練習這個操作。

輸入第一行為乙個整數n(n < 100),表示該組輸入的表示式的個數

之後n行為表示式,每個變數為乙個字母,表示式僅包括二元運算 + - * /

例如:a=b+c

通過構造dag圖,進行**優化,只需要保留ab,刪除無用變數,刪除變數時,盡量保留最早出現的變數。

ps:保證ab的值不同

input

3

a=b+c

b=b+b

a=c+c

output
b=b+b

a=c+c

1 #include 2 #include 

3 #include 4

5using

namespace

std;67

struct

node

8node[105

];13

int book[105

], top;

14char re[105][15

];15

16int fin(int x, char

c)17

25if(ireturn1;

26else

return0;

27}2829

int add_node(char

x)30

36if(ireturn

i;37

else

3844}45

46void add_op(char re, char op, int left, int

right)

4753

if(i54else

5563}64

65char haha(int

x)66

73return

c;74}75

76void dfs(int

x)7784}

8586

intmain()

87100

for(i=0;i)

101113

for(i=top-1;i>=0;i--)

114120

}121

for(i=top-1;i>=0;i--)

122128

}129

for(i=0;i)

130133

return0;

134 }

N DAG優化 編譯原理

大家都學過了 優化,其中有乙個dag優化,這次我們就練習這個操作。輸入第一行為乙個整數 n 100 表示該組輸入的表示式的個數 之後 行為表示式,每個變數為乙個字母,表示式僅包括二元運算 例如 a b c 通過構造dag圖,進行 優化,只需要保留ab,刪除無用變數,刪除變數時,盡量保留最早出現的變數...

編譯原理第十章 優化

1 區域性優化是在 b 範圍內進行的優化?a 過程體 b 基本塊 c 函式體 d 迴圈體 2 有關基本歸納變數的作用,錯誤的是 d a 自身定值 b 計算其它同族歸納變數 c 控制迴圈 d 記錄迴圈的結果 3 在迴圈內可以實行的優化有 d a 外提 b 刪除歸納變數 c 強度削弱 d 以上都有 4 ...

編譯原理 第十章複習題 優化

區域性優化是在 b 範圍內進行的優化?a 過程體 b 基本塊 c 函式體 d 迴圈體 有關基本歸納變數的作用,錯誤的是 d a 自身定值 b 計算其它同族歸納變數 c 控制迴圈 d 記錄迴圈的結果 在迴圈內可以實行的優化有 d a 外提 b 刪除歸納變數 c 強度削弱 d 以上都有 利用dag進行區...