#include #include struct metadata {}
struct headers {}
/*s1 : 解析開始*/
parser myparser(packet_in packet,
out headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata)
}/*s3: 入口邏輯,用if else實現port1->2, & port2->port1 的邏輯*/
control myingress(inout headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata) else if (standard_metadata.ingress_port == 2)
}}/*s4,剩下的邏輯也是什麼也沒有做*/
control myegress(inout headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata)
control mycomputechecksum(inout headers hdr, inout metadata meta)
control mydeparser(packet_out packet, in headers hdr)
/*s5, 交換機初始化*/
v1switch(
myparser(),
myverifychecksum(),
myingress(),
myegress(),
mycomputechecksum(),
mydeparser()
) main;
#include #include struct metadata {}
struct headers {}
parser myparser(packet_in packet, out headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata)
}control myingress(inout headers hdr, inout metadata meta,
inout standard_metadata_t standard_metadata)
/*就是在這裡公升級了,不再使用if else,而是使用table
我們後面會好好講述table 的使用*/
table forward
actions =
size = 1024;
default_action = noaction();
}control myegress(inout headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata)
control mydeparser(packet_out packet, in headers hdr)
v1switch( myparser(), myverifychecksum(), myingress(), myegress(),
mycomputechecksum(), mydeparser() ) main;
p402 移掉K位數字
移掉k位數字 這個題目寫的時候思路好像不是很清晰,總之最開始思路是 每個元素 cur指向 和它後面一位比較,若是更大,則刪除這一位。然而忘記了刪除之後,處理指標cur應當後移一位,讓已處理過的元素與當前元素再重新比較來決定取捨。於是拆了東牆補西牆甚至又用乙個指標pre來暫存已處理過的最後乙個結點,很...
P3812 模板 線性基
線性基可以解決的問題 給定n個整數 數字可能重複 求在這些數中選取任意個,使得他們的異或和最大。然後這道題也是一道模板題了。什麼是線性基呢?就是乙個去求解異或和最值的問題,為什麼可以求異或和最大呢,這裡需要用到了異或的性質了。a b c則有a c b以及a b c。所以我們距離9 10 12 11這...
P3812 模板 線性基
線性基是什麼?你可以理解為將乙個序列處理完之後得到的產物,並且有如下性質 1.原序列裡面的任意乙個數都可以由線性基裡面的一些數異或得到。2.線性基裡面的任意一些數異或起來都不能得到0 3.線性基裡面的數的個數唯一,並且在保持性質一的前提下,數的個數是最少的 因此,線性基可以計算一段序列中異或和最大,...