问题 H: 活字印刷

题目描述
活字印刷术是中国古代四大发明之一,今天我们要试着用计算机实现一个“活字印刷术”。现在输入一个字符串s,代表一套活字字模,其中每个字模上都刻有一个字母 s[i]。输出你可以印出的非空字母序列的数目。
输入
输入数据由多组测试数据组成。每组测试数据第一行输入一个字符串s ( 1 <= s.length <= 10 ),s中所有字母均为大写字母
输出
输出可以印出的非空字母序列数目
样例输入 Copy
AAB
样例输出 Copy
8
提示
对于样例:
可能的序列为 “A”, “B”, “AA”, “AB”, “BA”, “AAB”, “ABA”, “BAA”。

#include<bits/stdc++.h>
using namespace std;
char a[15];
int sum[30],ans;
void dfs()
{
	for(int i=0;i<26;i++)
	{
		if(sum[i]!=0)
		{
			ans++;
			sum[i]--;
			dfs();
			sum[i]++;
		}
	}
}
int main()
{
	while(~scanf("%s",a))
	{
		ans=0;
		memset(sum,0,sizeof(sum));
		int len=strlen(a);
		for(int i=0;i<len;i++)
		{
			sum[a[i]-'A']++;
		}
		dfs();
		printf("%d\n",ans);
	}
	return 0;
}
发布了9 篇原创文章 · 获赞 0 · 访问量 221

猜你喜欢

转载自blog.csdn.net/qq_43761904/article/details/104686605
今日推荐