欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

[U]3.1.5 Contact 小技巧题

程序员文章站 2022-06-07 13:56:02
...

刚开始做这题的时候思路错了, 把他想成字符串模式匹配题了。通过构建长度在[A,B]之间的字符串,然后再对主字符串进行模式匹配,想想要用kmp算法,对于这个我还不是很懂.... 打算好好学习一下kmp,后来估计了一下时间,发现必须超时。 转而一想: 其实需要的

刚开始做这题的时候思路错了, 把他想成字符串模式匹配题了。通过构建长度在[A,B]之间的字符串,然后再对主字符串进行模式匹配,想想要用kmp算法,对于这个我还不是很懂.... 打算好好学习一下kmp,后来估计了一下时间,发现必须超时。

转而一想:

其实需要的只是在主字符串中的一些子集,通过直接遍历主字符串长度为len(A

怎么解决呢?

可以通过添加前导'1',区别开来。再在输出的时候忽略前导'1'。

另外用到了排序,将出现频率分别开来。

输出的code写得不是很好;

/*
ID:sevenst4
LANG:C++
PROG:contact
*/
#include
#include
using namespace std;

int cnt[10000];
int cp[10000];
char line[222222];

bool cmp( int a,int b ){ return a>b; };

void print( int num )
{
 	 int l=0;
 	 int k[15]={0};
 	 while( num )
 	 {
	  		k[l++]=num&1;
			num=num>>1;	
 	 }
 	 for( int i=l-2;i>=0;i-- )
 	 	  printf( "%d",k[i] );
}
int getnum( int s,int e )
{
 	int ret=0;
 	for( int i=s;i