实验2 递归算法实验
实验内容
1. 编写一个程序,使用递归算法输出一个一维字符数组中所有字符的全排列,假设字符都不一样。例如{‘a’,’b’,’c’}的全排列为(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)。
源代码:
#include<bits/stdc++.h>
using namespace std;
char s[500],ans[500];
int v[500], len, sum;
void dfs(int k)
{
if(k == len){
printf("%s\n",ans);
return ;
}
for(int i=0; i<len; i++){
if(!v[i]){
ans[k] = s[i];
v[i] = 1;
dfs(k+1);
v[i] = 0;
}
}
}
int main()
{
cin >> s;
len = strlen(s);
sort(s,s+len);
dfs(0);
}
- 九数组分数。1, 2, 3…9 这九个数字组成一个分数,其值恰好为1/3,如何组合?编写程序输出所有的组合。
源代码:
#include<bits/stdc++.h>
using namespace std;
int a[500];
int v[500];
void dfs(int k)
{
if(k == 10){
if((a[1]*1000+a[2]*100+a[3]*10+a[4])*3 == a[5]*10000+a[6]