| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1690 人关注过本帖
标题:我这个程序哪里出错了啊~
只看楼主 加入收藏
zfzfzfzfln
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-1-18
收藏
 问题点数:0 回复次数:13 
我这个程序哪里出错了啊~
数字排列问题
列出所有从数学1到N的连续自然数排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入:N(1<=n<=9)
输出:由1~N组成的所有不重复的数字序列,每行一个序列。

int b;
int c[10];
void count(int a)
{
int i,j,m;
if (a>b)
{
for(i=1;i<=b;i++) printf("%d",a[i]);
printf("\n");
}
else
{
for (i=1;i<=b;i++)
{
for (i=1;j<a;j++)
{
if (i!=a[j]) m=0; else m=1;
}
if (m=0) c[a]=i;
conut(a+1);
}
}
}
main()
{
printf("Input a number(N<=10):");
scanf("%d",&b);
count(1);
}
搜索更多相关主题的帖子: 数学 quot int 数字 
2008-01-20 13:29
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
不怎么会写啊。。。期待高手解决。。。。
2008-01-20 14:22
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
生成全排列么????
递归解决....

樱花大战,  有爱.
2008-01-20 14:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
楼上的给一个看看啊。。。。
2008-01-20 14:27
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
void perm(int* arr,int k, int n)   //生成k-n的排列
{
       if(k==n-1)
      {
             for(int i=0;i<n;i++)
                   printf("%d ",arr[i]);
                  printf("\n");
      }
      else
         {
                for(int p=k;p<n;p++)
                    {
                             int temp = arr[k];
                                arr[k]= arr[p];
                               arr[p] =temp;
                              perm(arr,k+1,n);
                                temp=arr[k];
                                  arr[k]=arr[p];
                                   arr[p]=temp;
                       }
              }
}

樱花大战,  有爱.
2008-01-20 14:30
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
非递归的:
 int fun(int n)
{
    if(n==1) return 1;
   else return fun(n-1)*n;
}
void perm(int* arr,int n)  //生成n的全排列
{
    if(n==1)  printf("%d ",arr[n-1]) ;
     for(int i=0;;)
   {
       if(n==0) break;
      for(int j=0;j<n-1;j++)
        {
               int temp=arr[j];
                     arr[j]=arr[j+1];  
                         arr[j+1]=temp;
                 for(int k=0;k<n;k++)  //打印
                   {
                               printf("%d ",arr[k]);
                              printf("\n");
                     }
                   ++i;
              }
            if(i==fun(n)) break;
      }
}

樱花大战,  有爱.
2008-01-20 14:40
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
递归这个东西一直不是很明白。让我在仔细看看啊。谢谢楼上的。。。。
2008-01-20 14:50
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
终于弄懂了,画了半天的递归的图啊。看来递归还要好好看看啊
#include<stdio.h>
main()
{  void perm(int*,int,int);
    int b;
    int c[10]={1,2,3,4,5,6,7,8,9,10};
    printf("Input a number(N<=10):");
    scanf("%d",&b);
    fflush(stdin);
    perm(c,0,b);
}
void perm(int* arr,int k, int n)   //生成k-n的排列
{   int i,p,temp;
       if(k==n-1)
      {
             for( i=0;i<n;i++)
                   printf("%d ",arr[i]);
                  printf("\n");
      }
      else
         {
                for( p=k;p<n;p++)
                    {
                             if(k!=p)
                             {
                                 temp= arr[k];
                                 arr[k]= arr[p];
                                 arr[p] =temp;
                             }
                              perm(arr,k+1,n);
                             
                             if(k!=p)
                             {
                                 temp= arr[k];
                                 arr[k]= arr[p];
                                 arr[p] =temp;
                             }
                       }
              }
}
2008-01-20 15:47
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
支持一下楼上
2008-01-20 16:22
zfzfzfzfln
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-1-18
收藏
得分:0 
那我这个有什么问题啊~~~
感觉思路对啊。
请教达人~
2008-01-20 16:39
快速回复:我这个程序哪里出错了啊~
数据加载中...
 
   



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

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