zoukankan      html  css  js  c++  java
  • hdu 1423 GCIS 模板题

    //GCIS

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "algorithm"
     5 using namespace std;
     6 int dp[510], Max;
     7 int s1[510], s2[510];
     8 int len1, len2;
     9 
    10 int main()
    11 {
    12     int T, i, j;
    13     scanf("%d", &T);
    14     while(T--) {
    15         scanf("%d", &len1);
    16         for(i = 1; i <= len1; ++i)
    17             scanf("%d", &s1[i]);
    18         scanf("%d", &len2);
    19         for(i = 1; i <= len2; ++i)
    20             scanf("%d", &s2[i]);
    21         memset(dp, 0, sizeof(dp));
    22         for(i = 1; i <= len1; ++i) {
    23             Max = 0;
    24             for(j = 1; j <= len2; ++j) {
    25                 if(s1[i] > s2[j])
    26                     Max = max(Max, dp[j]);
    27                 else if(s1[i] == s2[j])
    28                     dp[j] = max(dp[j], Max + 1);
    29             }
    30         }
    31         int res = 0;
    32         for(i = 1; i <= len2; ++i) {
    33             res = max(res, dp[i]);
    34         }
    35         printf("%d
    ", res);
    36         if(T)
    37             printf("
    ");
    38     }
    39 }
     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 int T;
     4 int len1, len2;
     5 int s1[510], s2[510];
     6 int dp[510][510];
     7 
     8 int main()
     9 {
    10     scanf("%d", &T);
    11     while(T--) {
    12         memset(dp, 0, sizeof(dp));
    13         scanf("%d", &len1);
    14         int i, j;
    15         for(i = 1; i <= len1; ++i) {
    16             scanf("%d", &s1[i]);
    17         }
    18         scanf("%d", &len2);
    19         for(j = 1; j <= len2; ++j) {
    20             scanf("%d", &s2[j]);
    21         }
    22 
    23         for(i = 1; i <= len1; ++i) {
    24             int k = 0;
    25             for(j = 1; j <= len2; ++j) {
    26                 if(s1[i] == s2[j]) {
    27                     dp[i][j] = dp[i - 1][k] + 1;
    28                 }
    29                 else {
    30                     dp[i][j] = dp[i - 1][j];
    31                     if(s1[i] > s2[j] && dp[i - 1][k] < dp[i - 1][j]) {
    32                         k = j;
    33                     }
    34                 }
    35 //                printf("dp[%d][%d] == %d
    ", i ,j, dp[i][j]);
    36             }
    37         }
    38 
    39         int res = 0;
    40         for(j = 1; j <= len2; ++j) {
    41             res = max(res, dp[len1][j]);
    42         }
    43         printf("%d
    ", res);
    44         if(T) {
    45             printf("
    ");
    46         }
    47     }
    48 }
    49 //2
    50 //5
    51 //1 4 2 5 -12
    52 //4
    53 //-12 1 2 4
  • 相关阅读:
    如何写工程代码——重新认识面向对象
    java 利用同步工具类控制线程
    java简易excel导入导出工具(封装POI)
    二叉搜索树的简单介绍
    spring security 配置多个AuthenticationProvider
    spring和UEditor结合
    继承后的执行顺序
    【转】WPF中实现自定义虚拟容器(实现VirtualizingPanel)
    <译>自学WPF系列(1)
    <译>C#使用设计模式和软件设计原则构建应用程序 PartIII
  • 原文地址:https://www.cnblogs.com/AC-Phoenix/p/4297587.html
Copyright © 2011-2022 走看看