[UVA 111] History Grading
2012-01-29 17:54
363 查看
本题目本质上就是求解两个序列的最长公共子序列。代码中的chron[i]和respone[i]分别表示在历史中第i个发生的事件chron[i](正确时间顺序下)和事件respone[i](学生认为在此时发生的)。
代码如下:
代码如下:
#include <stdio.h> #define MAX 30 int chron[MAX]; int respone[MAX]; int f[MAX][MAX]; int main() { int i,c,n,j; scanf("%d",&n); for(i = 1;i <= n;i++) { scanf("%d",&c); chron[c] = i; } while(scanf("%d",&c) != EOF) { respone[c] = 1; for(i = 2;i <= n;i++) { scanf("%d",&c); respone[c] = i; } for(i = 1;i <= n;i++) f[i][0] = f[0][i] = 0; for(i = 1;i <= n;i++) { for(j = 1;j <= n;j++) { if(chron[i] == respone[j]) f[i][j] = f[i-1][j-1] + 1; else if(f[i-1][j] >= f[i][j-1]) f[i][j] = f[i-1][j]; else f[i][j] = f[i][j-1]; } } printf("%d\n",f ); } return 0; }
相关文章推荐
- UVA 111 History Grading
- Uva 111 – History Grading
- UVA 111 History Grading
- UVa 111 - History Grading
- Uva-111 History Grading 裸最长公共子序列
- UVa 111 History Grading (最长公共子序列)
- uva 111 History Grading
- UVA 111 History Grading(dp + LCS)
- UVA 111 - History Grading(动态规划)
- UVa 111: History Grading
- uva 111 History Grading
- uva 111 History Grading(动态规划——最长公共子序列)
- UVa 111 History Grading (简单DP,LIS或LCS)
- uva-111 G - History Grading
- UVA - 111 History Grading
- uva 111 - History Grading (dp, LCS)
- UVa 111 - History Grading
- UVA 111 History Grading
- UVA - 111 History Grading
- UVa 111 - History Grading 最长递增子序列 LIS