zoukankan      html  css  js  c++  java
  • POJ 4044 Score Sequence

    题目链接

    题意 :给你两个序列,进行降序排序,找出连续的公共子序列,将这个子序列输出,然后对个位数升序排序,如果个位数相同就按数的大小排,再输出这个新排好的。

    思路 :先排序,再找公共子序列,最后个位排序输出。

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <algorithm>
     5 
     6 using namespace std;
     7 
     8 int a1[35],a2[35] ;
     9 int b1[35],b2[35] ;
    10 
    11 bool cmp(int a,int b)
    12 {
    13     if(a%10 == b%10)
    14     return a < b ;
    15     return a % 10 < b % 10  ;
    16 }
    17 int main()
    18 {
    19     int T ;
    20     while(~scanf("%d",&T))
    21     {
    22         while(T--)
    23         {
    24             memset(a1,0,sizeof(a1)) ;
    25             memset(a2,0,sizeof(a2)) ;
    26             int n1,n2 ;
    27             scanf("%d %d",&n1,&n2) ;
    28             for(int i = 0 ; i < n1 ; i++)
    29                 scanf("%d",&a1[i]) ;
    30             for(int i = 0 ; i < n2 ; i++)
    31                 scanf("%d",&a2[i]) ;
    32             sort(a1,a1+n1) ;
    33             sort(a2,a2+n2) ;
    34             reverse(a1,a1+n1) ;
    35             reverse(a2,a2+n2) ;
    36             int len1 = 1 ;
    37             b1[0] = a1[0] ;
    38             for(int i = 1 ; i < n1 ; i++)
    39             {
    40                 if(a1[i] != a1[i-1])
    41                     b1[len1++] = a1[i] ;
    42             }
    43             int len2 = 1 ;
    44             b2[0] = a2[0] ;
    45             for(int i = 1 ; i < n2 ; i++)
    46             {
    47                 if(a2[i] != a2[i-1])
    48                     b2[len2++] = a2[i] ;
    49             }
    50             int len = -1,pos = 0 ;
    51             for(int i = 0 ; i < len1 ; i++)
    52             {
    53                 for(int j = 0 ; j < len2 ; j++)
    54                 {
    55                     if(b1[i] == b2[j])
    56                     {
    57                         int lenx = 1 ;
    58                         for(int k = 1 ; i+k < len1&&j+k < len2 ; k++)
    59                         {
    60                             if(b1[i+k] == b2[j+k])
    61                                 lenx ++ ;
    62                             else break ;
    63                         }
    64                         if(len < lenx)
    65                         {
    66                             len = lenx ;
    67                             pos = i ;
    68                         }
    69                         break ;
    70                     }
    71                 }
    72             }
    73             if(len == -1)
    74             {
    75                 printf("NONE
    ") ;
    76                 continue ;
    77             }
    78             for(int i = pos ; i < pos+len ; i++)
    79             {
    80                 printf("%d ",b1[i]) ;
    81             }
    82             printf("
    ") ;
    83             sort(b1+pos,b1+pos+len,cmp) ;
    84             for(int i = pos ; i < pos+len ; i++)
    85                 printf("%d ",b1[i]) ;
    86             printf("
    ") ;
    87         }
    88     }
    89     return 0;
    90 }
    View Code
  • 相关阅读:
    ubuntu 14.04 LTS 163更新源
    Windows 2008R2 修改SID
    ubuntu14 使用rsync远程备份文件
    vim常用
    Ubuntu创建lvm
    Windows 迁移本地用户配置文件到域用户
    Linux scp使用
    Centos 7 修改网卡名称、静态IP
    Axel多线程工具安装
    testlink 1.9.19安装
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3828521.html
Copyright © 2011-2022 走看看