| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7367 人关注过本帖
标题:输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?
只看楼主 加入收藏
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
结帖率:100%
收藏
 问题点数:0 回复次数:22 
输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?
输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?
搜索更多相关主题的帖子: 位数 数字 输出 
2008-03-10 22:01
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
排列组合....用递归做..记得以前有人发过了...你找找看

学习需要安静。。海盗要重新来过。。
2008-03-10 22:03
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
程序代码:
#include <stdio.h>
int x[10];
int used[10];
int n,k;

void dfs(int d)
{
    if(d==k){
        for(int i=0;i<k;i++){
            printf("%d",x[i]+1);
        }
        printf("\n");
    }
    else {
        for(int i=0;i<n;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");
}
2008-03-10 22:12
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
小小代码,不成敬意
/*
我也很菜,不过这个代码却是自己作的,有什么不对的地方,还请大家多多包涵。

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


#include<stdio.h>
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入函数*/
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();
}
2008-03-11 01:28
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#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<m;i++)
        {
            printf("%c  ",p[i]);
        }
       printf("\n");
    }
    else
    {
        for( int j=n;j<m;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;
        }
    }
}
这是我的...谢谢斑竹要不我全排列的递归真忘记了
可是对输入的任何数和字符全排列
收到的鲜花
  • xianshizhe1112008-03-11 10:47 送鲜花  6朵   附言:全排列 我很赞同

学习需要安静。。海盗要重新来过。。
2008-03-11 10:40
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
// full_Permutation.c

#define  Swap(a,b,c) ( (c) = (a) , (a) = (b) ,(b) = (c) )  
void Perm(int *List , int i , int N) {
         
          int j , temp ;  
          if(i == N) {
             for(j = 0 ; j <= N ; j++)
                 printf("%d " , List[i]) ;
             putchar('\n') ;
           }
           else {
                 for(j = i ; j <=N ; j++) {
                     Swap(List[i] , List[j] , temp) ;
                     Perm(List , i + 1 , N) ;
                     Swap(List[i] , List[j] , temp) ;
                  }
           }
}
收到的鲜花
  • lonmaor2008-03-11 11:58 送鲜花  4朵   附言:我很赞同

without further ado, let’s get started
2008-03-11 11:54
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
楼上的代码好眼熟..呵呵

学习需要安静。。海盗要重新来过。。
2008-03-11 12:02
hylhp
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-2-27
收藏
得分:0 
# include<iostream.h>
void main()
{
int a,b,c,d;
for(a=1;a<=4;a++){
   for(b=1;b<=4;b++){
      if(b==a)continue;
      for(c=1;c<=4;c++){
        if(c==a||c==b)continue;
        for(d=1;d<=4;d++){
          if(d==a||d==b||d==c)continue;
          cout<<a<<b<<c<<d<<endl;
    }
  }
}
2008-03-11 12:03
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
TO 7#
the Code in the book is
 << Fundamentals of data structures in C >>

without further ado, let’s get started
2008-03-11 12:28
Lusy
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-3-10
收藏
得分:0 
回复
楼上的程序我怎么运行不了呀,有一处地方错误!它要我们算的是无从复的三位数你求的是无从复的四位数?
2008-03-11 12:57
快速回复:输出由1,2,3,4组成的所有三位数,三位数间无重复数字.怎么写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020803 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved