c语言输出无重复字符,输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?...

输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?

输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?

搜索更多相关的解决方案:

位数  数字  输出

----------------解决方案--------------------------------------------------------

排列组合....用递归做..记得以前有人发过了...你找找看

----------------解决方案--------------------------------------------------------

程序代码:

#include

int x[10];

int used[10];

int n,k;

void dfs(int d)

{

if(d==k){

for(int i=0;i

printf("%d",x[i]+1);

}

printf("\n");

}

else {

for(int i=0;i

if(!used[i]){

used[i]=1;

x[d]=i;

dfs(d+1);

used[i]=0;

}

}

}

}

int main()

{

n=4;

k=3;

dfs(0);

scanf("%*s");

}

----------------解决方案--------------------------------------------------------

小小代码,不成敬意

/*

我也很菜,不过这个代码却是自己作的,有什么不对的地方,还请大家多多包涵。

WIN-TC测试通过,结果正确。

*/

#include

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入函数*/

int suru()

{

int a;

do

{

scanf("  %d",&a);

if(a<0||a>9)

printf("您输入字符超出范围,请重新输入:\n");

}

while(a<0||a>9);

return a;

}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~运算函数*/

void yunsuan(int a[4])

{

int i,j,k,z,m=1;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

for(k=0;k<4;k++,m++)

{

if((a[i]==a[j])||(a[i]==a[k])||(a[j]==a[k]))

{

m--;

continue;

}

z=a[i]*100+a[j]*10+a[k];

printf("%4d",z);

if(m%5==0)

puts(" ");

}

puts(" ");

printf("共有%d组数字。\n",m-1);

}

/*##################################主函数*/

int main(void)

{

int a[4],i;

char x;

do

{

printf("请输入四个10以下的数字:\n");

for(i=0;i<4;i++)

a[i]=suru();

yunsuan(a);

puts(" ");

printf("您还要继续测试吗?N退出,其它键继续:\n");

scanf("  %c",&x);

}

while(x!='n'&&x!='N');

printf("谢谢使用!\n");

getch();

}

----------------解决方案--------------------------------------------------------

#include"stdio.h"

#include"string.h"

void rank(char *,int,int);

void main()

{

char a[100];

gets(a);

rank(a,0,strlen(a));

}

void rank(char *p,int n,int m)

{   static int i=1;

if(n==m-1)

{

for(int i=0;i

{

printf("%c  ",p[i]);

}

printf("\n");

}

else

{

for( int j=n;j

{

char temp=p[n];

p[n]=p[j];

p[j]=temp;

rank(p,n+1,m);

temp=p[n];

p[n]=p[j];

p[j]=temp;

}

}

}

这是我的...谢谢斑竹要不我全排列的递归真忘记了

可是对输入的任何数和字符全排列xianshizhe111

+6

全排列 我很赞同

2008-3-11 10:47

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值