高校思政教育工作网站建设,上海网站备案在哪里,免费看片网站,设计网站建设莱芜这题一开始把我给坑了#xff0c;我还没知道LCIS的算法#xff0c;然后就慢慢搞吧#xff0c;幸运的是还真写出来了#xff0c;只不过麻烦了一点。 我是将该题转换为多条线段相交#xff0c;然后找出最多多少条不相交#xff0c;并且其数值死递增的。 代码如下#xff1…这题一开始把我给坑了我还没知道LCIS的算法然后就慢慢搞吧幸运的是还真写出来了只不过麻烦了一点。 我是将该题转换为多条线段相交然后找出最多多少条不相交并且其数值死递增的。 代码如下 #includeiostream
#includecstdio
#includealgorithm
#includecstring
using namespace std;
int dp[510][510];
int list1[510],list2[510];
struct Edge{int val,vex[510];int pos;
}p[510];
void init()
{int i,j;for(i0;i500;i)for(j0;j500;j)dp[i][j]1;for(i0;i500;i)p[i].pos0;
}int main()
{int t,n,m,i,j,k,r,f;scanf(%d,t);while(t--){init();scanf(%d,n);for(i1;in;i)scanf(%d,list1[i]);scanf(%d,m);for(i1;im;i)scanf(%d,list2[i]);int f0;for(i1;in;i){for(j1;jm;j){if(list1[i]list2[j]){p[i].vallist1[i];p[i].vex[p[i].pos]j;f1;}}}/*for(i1;in;i){cout ** p[i].val ** :;for(j0;jp[i].pos;j)coutp[i].vex[j] ;coutendl;}*/int Max0;if(f)Max1;for(i1;in;i){for(j1;ji;j){if(p[i].valp[j].val){//coutokendl;//coutp[i].val p[j].valendl;for(k0;kp[i].pos;k){for(r0;rp[j].pos;r){if(p[i].vex[k]p[j].vex[r])dp[i][p[i].vex[k]]max(dp[i][p[i].vex[k]],dp[j][p[j].vex[r]]1);if(dp[i][p[i].vex[k]]Max){Maxdp[i][p[i].vex[k]];//coutMaxendl;}}}}} }printf(%d\n,Max);if(t)printf(\n);}return 0;
} 正解的代码有如下两种版本一种是一维数组一种二维。思想是一样的。 #includeiostream
#includecstdio
#includecstring
using namespace std;
int dp[510][510],a[510],b[510];
int LCIS(int n,int m)
{int i,j,k,temp;int ans0;memset(dp,0,sizeof(dp));for(i1;in;i){temp0;for(j1;jm;j){dp[i][j]dp[i-1][j];if(a[i]b[j]) dp[i][j]temp1;if(a[i]b[j]dp[i-1][j]temp)tempdp[i-1][j];if(ansdp[i][j])ansdp[i][j];}}return ans;
}
int main()
{int t,n,m,i,j;scanf(%d,t);while(t--){scanf(%d,n);for(i1;in;i)scanf(%d,a[i]);scanf(%d,m);for(i1;im;i)scanf(%d,b[i]);printf(%d\n,LCIS(n,m));if(t)printf(\n);}
} #includeiostream
#includecstdio
#includecstring
using namespace std;
int f[510],a[510],b[510];
int LCIS(int n,int m)
{int i,j,k;memset(f,0,sizeof(f));for(i1;in;i){ k0;for(j1;jm;j){ if(a[i]b[j])f[j]max(f[j],k1);if(a[i]b[j]f[j]k)kf[j];//coutkendl;}}int ans0;for(i0;im;i)ansmax(ans,f[i]);return ans;
}
int main()
{int t,n,m,i,j;scanf(%d,t);while(t--){scanf(%d,n);for(i1;in;i)scanf(%d,a[i]);scanf(%d,m);for(i1;im;i)scanf(%d,b[i]);printf(%d\n,LCIS(n,m));if(t)printf(\n);}
} 转载于:https://www.cnblogs.com/wangfang20/p/3175439.html