大家都學過了**優化,其中有乙個dag優化,這次我們就練習這個操作。
輸入第一行為乙個整數n(n < 100),表示該組輸入的表示式的個數
之後n行為表示式,每個變數為乙個字母,表示式僅包括二元運算 + - * /
例如:a=b+c
通過構造dag圖,進行**優化,只需要保留ab,刪除無用變數,刪除變數時,盡量保留最早出現的變數。
ps:保證ab的值不同
input
3outputa=b+c
b=b+b
a=c+c
b=b+ba=c+c
1 #include 2 #include3 #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進行區...