输出由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