POJ 4044 Score Sequence
2024-08-24 03:55:16
题意 :给你两个序列,进行降序排序,找出连续的公共子序列,将这个子序列输出,然后对个位数升序排序,如果个位数相同就按数的大小排,再输出这个新排好的。
思路 :先排序,再找公共子序列,最后个位排序输出。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std; int a1[],a2[] ;
int b1[],b2[] ; bool cmp(int a,int b)
{
if(a% == b%)
return a < b ;
return a % < b % ;
}
int main()
{
int T ;
while(~scanf("%d",&T))
{
while(T--)
{
memset(a1,,sizeof(a1)) ;
memset(a2,,sizeof(a2)) ;
int n1,n2 ;
scanf("%d %d",&n1,&n2) ;
for(int i = ; i < n1 ; i++)
scanf("%d",&a1[i]) ;
for(int i = ; i < n2 ; i++)
scanf("%d",&a2[i]) ;
sort(a1,a1+n1) ;
sort(a2,a2+n2) ;
reverse(a1,a1+n1) ;
reverse(a2,a2+n2) ;
int len1 = ;
b1[] = a1[] ;
for(int i = ; i < n1 ; i++)
{
if(a1[i] != a1[i-])
b1[len1++] = a1[i] ;
}
int len2 = ;
b2[] = a2[] ;
for(int i = ; i < n2 ; i++)
{
if(a2[i] != a2[i-])
b2[len2++] = a2[i] ;
}
int len = -,pos = ;
for(int i = ; i < len1 ; i++)
{
for(int j = ; j < len2 ; j++)
{
if(b1[i] == b2[j])
{
int lenx = ;
for(int k = ; i+k < len1&&j+k < len2 ; k++)
{
if(b1[i+k] == b2[j+k])
lenx ++ ;
else break ;
}
if(len < lenx)
{
len = lenx ;
pos = i ;
}
break ;
}
}
}
if(len == -)
{
printf("NONE\n") ;
continue ;
}
for(int i = pos ; i < pos+len ; i++)
{
printf("%d ",b1[i]) ;
}
printf("\n") ;
sort(b1+pos,b1+pos+len,cmp) ;
for(int i = pos ; i < pos+len ; i++)
printf("%d ",b1[i]) ;
printf("\n") ;
}
}
return ;
}
最新文章
- ul li设置横排,并除去li前的圆点
- 基于CkEditor实现.net在线开发之路(3)常用From表单控件介绍与说明
- AngularJS Best Practices: ng-include vs directive
- 魔法禁书目录2:回家(codevs 3024)
- hadoop2.5重新编译问题
- [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler
- drds 广播表的创建以及使用
- Django中级篇之模板语言
- C# 平时碰见的问题【2】
- 基于jquery tool实现的windows桌面效果
- floyd+动态规划 hdu-4571-Travel in time
- Managing TCP Connections in Dynamic Spectrum Access Based Wireless LANs
- LeetCode(60)-ZigZag Conversion
- 使Python走向Effective系列目录
- php new self()
- jQuery选择器详解
- c语言数字图像处理(一):bmp图片格式及灰度图片转换
- JAVA Socket编程和C++ Socket编程有什么不同
- 正则grep
- css实现栏目两边斜线的效果