OJ第二次作业第三题
2017-10-23 20:00
169 查看
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int f[100],a[1000],i,n,ans; char str[1000]; void dfs(int dep) { int r; if (dep==n+1) { ans++; //记录方案总数 for (r=1;r<=n;++r) printf("%c",a[r]+96); printf("\n"); return; } for (r=1;r<=26;++r) if (f[r]>0)//如果这个字母没有取完 { a[dep]=r;//a依然是记录数组 f[r]--;//计数器-1 dfs(dep+1); f[r]++;//回溯一步 } } int main() { scanf("%d",&n); cin>>str; for (i=0;i<n;++i) f[str[i]-96]++;//记录每一个字母在字符串中出现了几次 dfs(1); printf("%d",ans); return 0; }
相关文章推荐
- C#第二次作业的第三题
- 【第二次作业】
- java-java57-第二次作业
- 第三课作业1计算:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=?
- C语言第二次作业练习
- 全新Linux+Python高端运维班第二次作业
- 马哥培训——第二次作业
- 《面向对象程序设计》第二次作业(1)(A+B问题)
- 编程题A+B Format的总结(第二次作业<一>)
- 第二次作业
- 第二次寒假作业
- [W班]第二次结对作业成绩评价
- 第二次软工阅读作业-孙胜
- 第二次阅读作业——程志
- 团队作业8——第二次项目冲刺(Beta阶段)Day1--5.18
- 《linux内核分析》第二次课 实验作业
- 团队作业8——第二次项目冲刺(Beta阶段)--5.19 first day
- 团队作业8——第二次项目冲刺(Beta阶段)第二天
- 第二次作业 邱鹏 2013551628
- 第二次作业(5.使用linux)