本文共 648 字,大约阅读时间需要 2 分钟。
题意:给你一个n*n的棋盘,有两个人都从1出发到达n*n这个位置,其中给你两个人的行走路径,让你求出他们俩最长的公共路径的长度。
思路:两个人都是在棋盘上行走,可以把第一个人行走的位置进行编号,然后再在把第二个人的路径按照第一个人行走的顺序进行对应,此时只需要求第二个人的最长上升子序列即可。
#include#include using namespace std;const int maxn=63000;int a[maxn];int b[maxn];int num[maxn];int s[maxn];int main(){ int T; cin>>T; for(int ka=1; ka<=T; ka++) { int n,m1,m2; cin>>n>>m1>>m2; memset(num,0,sizeof(num)); for(int i=0; i >a[i]; num[a[i]]=i+1; } for(int i=0; i >b[i];// cout< <<" "< < ans) { ans=k; } } printf("Case %d: %d\n",ka,ans+1); } return 0;}
转载地址:http://hfgsi.baihongyu.com/