【ZZULIOJ】1207: 字符串问题

来源:互联网 发布:淘宝劳保用品 编辑:程序博客网 时间:2024/06/05 07:26

1207: 字符排列问题

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 164  Solved: 143

SubmitStatusWeb Board

Description

有n个字母,列出由该字母组成的字符串的全排列(相同的排列只计一次)。

Input

第一行输入是字母个数n,1<=n<=20。接下来一行输入的是待排列的n个字母。

Output

计算出的n 个字母的所有不同排列总数

Sample Input

4aacc

Sample Output

6

HINT

Source

#include <iostream>#include <cstring>using namespace std;/*如果按照排列组合的知识是很好理解的,不过
我是找规律的
所有基础字母种树的阶乘 N!
乘上重复的字母(可以理解为插空法)
得出全排列数
*/long f(int n)  //creat阶乘函数 {long sum=1;n++;while(--n){sum*=n;}  return sum;}int main(int argc, char** argv) {int n;cin>>n;char str[20];long x=0,y=0,z=0;cin>>str; for(int i=0;i<n;i++){//获取当前的第一个字符 //开始查找 if(str[i])  //排除已检查过的字符   {  //IF只能判断true或者false y++;for(int j=i+1;j<n;j++){if(str[j]==str[i]){str[j]='\0';x++;}}}}z=f(y)*(1+x);cout<<z<<endl; }



原创粉丝点击