解题思路 1、枚举方案数
2、标记数组来判断元素是否取过
3、搜索当前层 //保存元素注意事项:
4、进入下一层参考代码
5、回溯,还原相关状态
6、终止条件+处理数据
7、打印优化
#include <bits/stdc++.h>
using namespace std;
char a[1001];
int b[1001],c[1001],tot;
void dfs(int dep){
for(int i=0;i<tot;i++)
if(c[i]==0){
b[dep]=i;
c[i]=1;
dfs(dep+1);
c[i]=0;
}
if(dep==tot-1){
for(int i=0;i<tot;i++)
cout<<a[b[i]];
cout<<endl;
}
return;
}
int main()
{
cin>>a;
tot=strlen(a);
dfs(0);
return 0;
}
0.0分
0 人评分
C语言训练-求素数问题 (C语言代码)浏览:1509 |
DNA (C语言描述,蓝桥杯)浏览:1653 |
整除问题 (C语言代码)浏览:594 |
多组数据新方法浏览:368 |
【偶数求和】 (C语言代码)浏览:452 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:479 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:687 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:447 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:487 |
Manchester-台球碰撞-(附带图解)浏览:3790 |