Home >Database >Mysql Tutorial >[U]3.1.5 Contact 小技巧题

[U]3.1.5 Contact 小技巧题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 15:42:241442browse

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

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

转而一想:

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

怎么解决呢?

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

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

输出的code写得不是很好;

/*
ID:sevenst4
LANG:C++
PROG:contact
*/
#include<stdio.h>
#include<algorithm>
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<e if line ret="ret<<1|1;" else return int main freopen a for i="0;i<(1<<13);i++" cnt scanf char data len="0;" while j="0;j+i<=len;j++" cp sort index="0;" n-- top="cp[index];" break outnum="0;" printf bool flag="false;" print><br>
<br>



</e></algorithm></stdio.h>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn