|
发表于 2015-3-24 21:42:43
|
显示全部楼层
- /*注释写好,看不看得懂就看你自己了,一句话,写完注释我想骂人,哪有这样写代码的,一定规范性都没有,特别是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;
- }
复制代码 |
|