| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 330 人关注过本帖
标题:一道全排列的问题!!求帮看看代码
只看楼主 加入收藏
Romantic8121
Rank: 2
等 级:论坛游民
帖 子:50
专家分:21
注 册:2011-4-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一道全排列的问题!!求帮看看代码
程序代码:
#include<stdio.h>
#include<stdlib.h>
int res[10];
void perm(int k,int a[]);
void swap(int *a,int *b);
void output(int *list);
void circle_right(int a[],int m,int i);
void circle_left(int a[],int m,int i);
int main(int c,char **v)
{
    int i,n;
    scanf("%d",&n);
    if(c==2)
        n=atoi(v[1]);    
    for (i=0;i<n;i++)
        res[i]=i+1;
        res[i]=0;
        perm(n,res);
}
void perm(int k,int a[])
{
    int i;
    if(k==1)
    {
        output(res);
        return;
    }
    for(i=0;i<k;i++)
    {
        swap(&a[0],&a[i]);
        circle_right(a,1,i);
        perm(k-1,&a[1]);
        circle_left(a,1,i);
        swap(&a[i],&a[0]);
    }
}
void swap(int *a,int *b)
{
    int tmp=*a;
    *a=*b;
    *b=tmp;
}
void output(int *list)
{
    for(;*list!=0;list++)
    {
        putchar(*list+'0');
        putchar(' ');
    }
    putchar('\n');
}
void circle_right(int a[],int m,int i)   
{   
    int temp;   
    int j,k;    
    for(k=1;k<=i-m;k++)   
    {   
        temp=a[i];   
        for(j=i;j>m;j--)   
            a[j]=a[j-1];   
            a[m]=temp;   
    }   
}   
void circle_left(int a[],int m,int i)   
{   
    int temp;   
    int j,k;    
    for(k=1;k<=i-m;k++)   
    {   
        temp=a[m];   
        for(j=m;j<i;j++)             
            a[j]=a[j+1];   
            a[i]=temp;   
    }   
} 

全排列数的问题 如
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
如果将每行上的输出看成一个数字,则所有输出构成升序数列。
我的问题是输出4的时候就出现了错误,似乎是void circle_right(int a[],int m,int i)和void circle_left(int a[],int m,int i)的问题,具体我不太清楚,求解答
2011-05-26 00:58
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:7 
看不懂。帮顶。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-26 11:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:7 
微软的STL里面有这个函数

                                         
===========深入<----------------->浅出============
2011-05-26 15:57
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:7 
以下是引用ansic在2011-5-26 11:55:57的发言:

看不懂。帮顶。
大哥,怎么我想说的每次都被抢占了。我是真的不懂C。

最近刚好公司没事,让学C语言,我才来这里的。以前只知道写一些WEB编程脚本。以前对C几乎是零基础。所以看到各位高手写的C代码我基本是看不懂的。除非比较简单的。

不过我会努力学好C,争取以最短时间为新人解答疑惑。

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2011-05-26 16:04
快速回复:一道全排列的问题!!求帮看看代码
数据加载中...
 
   



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

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