- 论坛徽章:
- 0
|
看起來可以使用dynamic programming
以這個例子為例
flag3 flag1 flag3 flag1 flag1 flag3 flag1 flag1 flag1 flag1 flag1
共有11個點
1 2 3 4 5 6 7 起始位置
5 1
6 0 1
7 0 1 1
8 1 1 1 1
9 1 1 1 1 1
10 1 1 1 1 1 1
11 1 1 1 1 1 1 1
終
止
位
置
最上面那一列是起始位置(從1-7, 因為題目條件至少要5個點, 所以最末端就是7-11)
最左邊那一排是終止位置(從5-11, 因為題目條件至少要5個點, 所以最前端就是1-5)
表裡面的數字代表是哪個flag(flag1-flag3, 0表示沒有flag)
所以可以得到這張表只有一個flag的可能性
就是flag1
取其最長長度
就是1-11
所以可以得到
1-11 flag1
驗證一下
flag3 flag3 flag3 flag2 flag2 flag2 flag2 flag3 flag3 flag3 flag3
1 2 3 4 5 6 7 起始位置
5 3
6 0 2
7 0 2 2
8 3 0 2 2
9 3 0 0 2 2
10 3 0 0 0 0 3
11 3 3 0 0 0 3 3
終
止
位
置
可以得到這張表有兩個flag的可能性
就是flag2和flag3
其中flag2的priority較高
所以取其最長長度2-7, 3-8, 4-9
這邊就...
所以是不是還需要考慮其他原因
比方說還要比例最高(因為照你題目敘述, 4-8是所有組合裡面flag2的比例最高) |
|