专栏首页wym牛客练习赛23 D

牛客练习赛23 D

  利用全排列函数加vector数组,开十个vector,存a到i字母出现的位置,最后每个vector再push_back(字符串长度加一)作为结束标志。

  由于同一字符串只算一个,只要每种情况下有一种字符串就加一,然后全排列函数

#include<bits/stdc++.h>
using namespace std;
int id[10];
vector<int> vt[10];
char s[3002];
int main()
{
	scanf("%s",s+1);
	int n=strlen(s+1);

	for(int i=1;i<=n;i++)
	    vt[s[i]-'a'].push_back(i);
	    
	for(int i=0;i<9;i++)
		id[i]=i,vt[i].push_back(n+1);
		
    int ans=0;
	do{
		int p=0;
         for(int i=0;i<9;i++)
           {
           	p=*upper_bound(vt[id[i]].begin(),vt[id[i]].end(),p);
           	if(p==n+1)
           	break;
		   }
		if(p<n+1)
		 ans++;
	}while(next_permutation(id,id+9));
    printf("%d\n",ans);
	return 0;
} 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 种树 差分约束|贪心

    每次种的树在重叠区间越多,种的树越少。只有结束位置才会重合,就对区间结束的位置从小到大排序。

    用户2965768
  • HDU 6318 树状数组求逆序数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6318

    用户2965768
  • 2019 CCPC 秦皇岛 Escape 最大流

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    用户2965768
  • Day23-排序-快排&堆排&归并排序

    右指针--,直到找到比基准值小的元素,将左右指针指向的元素进行交换;

    BUPTrenyi
  • 小白刷力扣之两数之和

    作为一个半路出家的算法小白,最近尝试着刷一下力扣,来扩展些思维,毕竟总是写一些复杂度非常高的代码也不是那么回事。

    周萝卜
  • 46. 全排列【回溯算法】

    输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...

    韩旭051
  • 回溯算法:求子集问题(二)

    题目链接:https://leetcode-cn.com/problems/subsets-ii/

    代码随想录
  • 一文看懂《最大子序列和问题》(内含Java,Python,JS代码)

    最大子序列和是一道经典的算法题, leetcode 也有原题《53.maximum-sum-subarray》,今天我们就来彻底攻克它。

    lucifer210
  • 、Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) wh...

    Tyan
  • zxing二维码生成服务之深度定制

    二维码生成服务之深度定制 之前写了一篇二维码服务定制的博文,现在则在之前的基础上,再进一步,花样的实现深度定制的需求,我们的目标是二维码上的一切都是可以由用户...

    一灰灰blog

扫码关注云+社区

领取腾讯云代金券