标签:
题意: 就是给你一个乱序序列, 现在要找某个特定序列的个数, 某特定序列的要求为 该序列长度为k 且序列中为连续的序列 例如 13245 就为1-5的连续序列
题解: 没啥解法 , 两重for 暴力,就是这样
代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<string.h>
using namespace std;
map<int, int> mark;
int main()
{
int n, m, value[10005], mymap[1005], q, flag1 = 1 ;
while(scanf("%d %d", &n, &m) != EOF)
{
memset(value, 0, sizeof(value));
for(int i = 1; i <= n; i++)
{
scanf("%d", &value[i]);
}
int sm, big;
memset(mymap, 0, sizeof(mymap));
mark.clear();
for(int i = 1; i <= n; i++)
{
sm = value[i], big = value[i];
mark[value[i]] ++;
mymap[1] ++;
for(int j = 1; j <= 1000; j++)
{
if(i + j > n) break;
if(mark[value[i+j]]) break;
if(value[i+j] > big) big = value[i+j];
if(value[i+j] < sm) sm = value[i+j];
mark[value[i+j]] ++;
if(value[i+j] > sm + j) continue;
if(value[i+j] < big - j) continue;
if(big > sm + j) continue;
mymap[j+1] ++;
}
mark.clear();
}
printf("Case #%d:\n", flag1 ++);
while(m--)
{
scanf("%d", &q);
printf("%d\n", mymap[q]);
}
}
}
标签:
原文地址:http://blog.csdn.net/q651111937/article/details/46278575