題目描述:最長公共子串行的變形
題目序列中第i項是學生給第i號歷史事件排出的序號,另外還給出了第i號歷史事件的正確序號
求按照學生給出的序號排好歷史事件後,所得的事件排序與歷史事件實際發生的序列的最長公共子串行
分析:本題最坑的地方是審題,注意題目給出的是給第i號歷史事件排出序號,求的卻是按照序號排好事件後與歷史事件實際發生的序列的最長公共子串行,只要將事件按所給序號排好後就完完全全是乙個求最長公共子串行的題了;審題中另乙個比較坑的地方是題目詳細敘述了「歷史考試評分」的兩種策略,卻明確要求你僅用第二種策略計算
rank[temp]=i ,表示排好序後第temp個發生的事件是編號為i的事件
1 #include2 #include34int max(int a,intb)5
8int
main()919
while(scanf("
%d",&temp)!=eof)
2027 memset(d,0,sizeof
(d));
28for(i=1;i<=n;i++)
29for(j=1;j<=n;j++)
3036 printf("
%d\n
",d[n][n]);37}
38 }