/*注释写好,看不看得懂就看你自己了,一句话,写完注释我想骂人,哪有这样写代码的,一定规范性都没有,特别是OK()这个函数。至于鱼币你给不给我,你觉得好就给,觉得不行就算了,我也是没事干才帮你写的。想走程序员这条路,还是要靠自己努力啊。*/
#include<stdio.h> //头文件
#include<algorithm>
using namespace std;
int ans; //定义全局变量用来统计组合的个数(也就是6)
int ok(char str[],int a,int b)
{
if(b>a)
for(int i=a;i<b;i++) //不知道你这部分的分号在哪里,所以没法解释。其实我懒得去看。
if(str[i]==str[b])
return 0;
return 1;
}
void perm(char str[],int k,int m) //perm函数
{
int i;
if(k==m) //判断3是否等于1
{
ans ++; // ans累加
for(i=0;i<=m;i++) //循环
{
printf("%c",str[i]); // 如果为输入一个字符 直接打印出来
}
printf("\n");
}
else //3 不等于 1
{
for(i=k;i<=m;i++) //循环3次
if(ok(str,k,i)) //判断语句,为真执行下面语句
{
swap(str[k],str[i]); //swap交换函数,估计你忘记写上出去所以没法解释了。
perm(str,k+1,m); //继续跳转到perm函数
swap(str[k],str[i]); //swap交换函数,估计你忘记写上出去所以没法解释了。
}
}
}
int main(int argc,char*argv[]) //主函数
{
char str[1000]; //定义str
int n;
while(scanf("%d",&n)!=EOF) //输入一个数不等于EOF
{
ans = 0; //ans = 0
scanf("%s",str); //输入字符串的个数,假设输入3
perm(str,0,n-1); //跳转到perm函数
printf("%d\n",ans); //打印ans的累加次数
}
return 0;
}
|