2025年重复元素排列(c语言)

重复元素排列(c语言)input txt 文件输入 第一行是待排元素个数 第二行是待排元素 4 aacc include stdio h include string h include stdlib h int s 0 排列个数 void pailie char x int k stdlib h string h stdio h

大家好,我是讯享网,很高兴认识大家。

input.txt文件输入,第一行是待排元素个数,第二行是待排元素

4


讯享网

aacc

 #include<stdio.h> #include<string.h> #include<stdlib.h> int s=0; //排列个数 void pailie(char x[],int k,int m,FILE* out) //递归排列+输出 { int i,j,c=0; char t; if(k==m) //排列一个->直接输出 { s++; //排列个数++ for(i=0;i<=m;i++) { fprintf(out,"%c",x[i]); //文件输出 printf("%c",x[i]); //输出 } fprintf(out,"\n"); //文件输出 printf("\n"); //输出 } else { for(i=k;i<=m;i++) //从头开始,到m排列 { c=0; //标志 for(j=k;j<i;j++) //如果前面有相同的字母(重复元素) { if(x[j]==x[i]) { c=1; //找到了,标志一下 break; } } if(c) //有重复的元素,跳过 continue; t=x[k];x[k]=x[i];x[i]=t; //交换 pailie(x,k+1,m,out); //递归 t=x[k];x[k]=x[i];x[i]=t; //换回 } } } int main(){ int n=0,i; FILE *in=fopen("input.txt","r"); //读文件 if(in==NULL) { printf("缺少文件‘input.txt’"); exit(0); } fscanf(in,"%d",&n); //字母个数 char x[n+5]; fscanf(in,"%s",x); //读字母字符串 fclose(in); //关文件 FILE *out=fopen("output.txt","w+"); //创文件 pailie(x,0,n-1,out); //排列+输出文件 printf("%d",s); //输出排列个数 fprintf(out,"%d",s); //文件输出排列个数 fclose(out); //关文件 return 0; } 

讯享网

结果会保存到output.txt中

小讯
上一篇 2025-04-09 13:12
下一篇 2025-01-25 10:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/37556.html