CodeForces 128B - String 优先队列暴力..

7 篇文章 0 订阅

      题意:

               读入一个串..输出其第k大的子串

      题解

               直接用优先队列暴力..


Program:

#include<iostream>
#include<stdio.h>
#include<cmath>
#include<string.h>
#include<stack>
#include<queue>
#include<algorithm>
#define oo 1000000007
#define ll long long 
#define MAXN 100005
using namespace std;
struct node
{
       string s;
       int t;
       bool operator <(node a) const
       {
               return a.s<s;
       }
}h,p;
char str[MAXN];
priority_queue<node> myqueue;
void judge(int num)
{
       int i,len=strlen(str);
       while (!myqueue.empty()) myqueue.pop();
       for (i=0;i<len;i++) 
       {
              h.t=i,h.s=str[i];
              myqueue.push(h);
       }
       while (!myqueue.empty())
       {
              h=myqueue.top();
              myqueue.pop();
              num--;
              if (!num) { cout<<h.s<<endl; return; } 
              p.t=h.t+1;
              if (p.t==len) continue;
              p.s=h.s+str[p.t];
              myqueue.push(p);
       }
       printf("No such line.\n");
       return;
}
int main()
{    
       gets(str);
       int x;
       scanf("%d",&x); 
       judge(x);
       return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值