玉面小蛟龙


私信TA

用户名:2410056091

访问量:14806

签 名:

等  级
排  名 252
经  验 5798
参赛次数 46
文章发表 51
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

#include <iostream>
#include<algorithm>
#include <stdio.h>
#include<string.h>
using namespace std;
int b[11],cou1=-1,ans=0;
char a[11],c[11],d[11]; 
void dfs(int cou)	//cou表示安排第几个字符 
	{
		if(cou==strlen(a))	//若果字符数达到,是一种全排列(0开始),和目标进行比较,相同记录结果跳出 
			{	cou1++;
			//	printf("%s  %d\n",c,cou1);
				if(strcmp(d,c)==0)	//比较 
					{
						ans=cou1;//保存结果,返回 
						return ;
					}
			}
		else {
			int i;
			for(i=0;i<strlen(a);i++)	
				{
					if(b[i]==0)	//未被选择过 
						{
							c[cou]=a[i];	//添加到某种全排列 
							b[i]=1;//标记 
							dfs(cou+1); //找下一个字符,回溯 
							b[i]=0;
						}
				}
		}
	}
int main()
{
	scanf("%s",&a);//输入目标态 
	int i,j;
	strcpy(d,a);//保存 
	sort(a,a+strlen(a));//对出现的字母进行排序,然后按照深搜全排列 
	dfs(0);//深搜,全排列 
	printf("%d",ans);
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区