| syhd142 |
|
|||
|
日歷
統計
導航常用鏈接留言簿(2)隨筆檔案(23)文章分類(270)
文章檔案(122)我的豆瓣搜索最新評論
|
命名很簡單的一道最長遞減子序列,UVA上的題就是麻煩,還要處理這七七八八的其它東西,不過練練coding能力也還蠻好的。 #include <stdio.h>
#include <algorithm> #define N 1005 struct elephant { int id, wt, iq; }e[N]; int b[N], pre[N]; int cmp(elephant a, elephant b) { return a.wt < b.wt; } int main() { int n = 0, cur, ans, stack[N], top = 0; while(~scanf("%d %d", &e[n].wt, &e[n].iq)) { b[n] = 1; pre[n] = 0; e[n].id = n; n++; } std::sort(e, e + n, cmp); // for(int i = 0; i < n; i++) // printf("%d %d %d\n", e[i].wt, e[i].iq, e[i].id); ans = 1; for(int i = 1; i < n; i++) { for(int j = 0; j < i; j++) { if(e[i].wt > e[j].wt && e[i].iq < e[j].iq && b[i] <= b[j]) { b[i] = b[j] + 1; pre[i] = j; } } if(b[i] > ans) { cur = i; ans = b[i]; } } printf("%d\n", ans); while(cur) { stack[top++] = e[cur].id + 1; cur = pre[cur]; } for(int i = top - 1; i >= 0; i--) printf("%d\n", stack[i]); return 0; }
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
| Copyright © Fucker | Powered by: 博客園 模板提供:滬江博客 |