P4 02語言基礎hello world

2021-09-07 19:55:51 字數 1791 閱讀 8583

#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.線性基裡面的數的個數唯一,並且在保持性質一的前提下,數的個數是最少的 因此,線性基可以計算一段序列中異或和最大,...